Python“raisefrom”用法

Python中的raiseraisefrom有什么区别

尝试:
升值误差
例外情况除外,如e:
提升索引器

产生

回溯(最近一次呼叫最后一次):
文件“tmp.py”,第2行,在<模块>
升值误差
数值误差
在处理上述异常期间,发生了另一个异常:
回溯(最近一次呼叫最后一次):
文件“tmp.py”,第4行,在<模块>
提升索引器
索引器

尝试:
升值误差
例外情况除外,如e:
从e提升索引器

产生

回溯(最近一次呼叫最后一次):
文件“tmp.py”,第2行,在<模块>
升值误差
数值误差
上述异常是以下异常的直接原因:
回溯(最近一次呼叫最后一次):
文件“tmp.py”,第4行,在<模块>
从e提升索引器
索引器

不同之处在于,当您使用来自的时,设置了\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。如果您从中省略了,则不会设置\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu,但是也可以设置\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

如果在异常处理程序中使用了raise,则会设置\uuuuuu上下文\uuuu;如果您在其他任何地方使用了raise,则也不会设置\uuuuuuuuuuuuu

如果设置了\uuuuuuuuuuuuuuuu原因,则在异常上也设置了\uuuuuuuuuuuu抑制\uuuu上下文\uuuuuuu=True标志;当\uuuu suppress\u context\uuu设置为True时,打印回溯时将忽略\uuuu context\uuu

从异常处理程序引发时,如果您不想显示上下文(在处理另一个发生的异常时不想显示上下文),请使用raise。。。从无到设置\u抑制\u上下文为真

换句话说,Python在异常上设置一个上下文,这样您就可以内省引发异常的位置,让您查看是否有另一个异常被它取代。您还可以向异常中添加一个原因,使对另一个异常的回溯显式(使用不同的措辞),并忽略上下文(但在调试时仍可以自省)。使用raise。。。从“无”可以抑制正在打印的上下文

请参阅raise语句文档:

from子句用于异常链接:如果给定,第二个表达式必须是另一个异常类或实例,然后它将作为\uuuuuu原因属性(可写)附加到引发的异常。如果未处理引发的异常,将打印两个异常:

&gt&燃气轮机&燃气轮机;尝试:
...     打印(1/0)
... 除作为exc的例外情况外:
...     从exc引发运行时错误(“发生了错误”)
...
回溯(最近一次呼叫最后一次):
文件&quot&书信电报;stdin&gt&引用;,第2行,in<模块>
ZeroDivisionError:整数除以零或模乘零
上述异常是以下异常的直接原因:
回溯(最近一次呼叫最后一次):
文件&quot&书信电报;stdin&gt&引用;,第4行,in<模块>
运行时错误:发生了一些错误

如果在异常处理程序或finally子句中引发异常,则类似的机制会隐式工作:然后将以前的异常附加为新异常的\uuuuuuu上下文属性:

&gt&燃气轮机&燃气轮机;尝试:
...     打印(1/0)
... 除:
...     raise RUNTIMERROR(“发生了错误”)
...
回溯(最近一次呼叫最后一次):
文件&quot&书信电报;stdin&gt&引用;,第2行,in<模块>
ZeroDivisionError:整数除以零或模乘零
在处理上述异常期间,发生了另一个异常:
回溯(最近一次呼叫最后一次):
文件&quot&书信电报;stdin&gt&引用;,第4行,in<模块>
运行时错误:发生了一些错误

另请参阅内置异常文档,以了解附加到异常的上下文和原因信息的详细信息

发表评论