Python中的raise和raisefrom有什么区别
尝试:
升值误差
例外情况除外,如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原因属性(可写)附加到引发的异常。如果未处理引发的异常,将打印两个异常:>&燃气轮机&燃气轮机;尝试: ... 打印(1/0) ... 除作为exc的例外情况外: ... 从exc引发运行时错误(“发生了错误”) ... 回溯(最近一次呼叫最后一次): 文件"&书信电报;stdin>&引用;,第2行,in<;模块>; ZeroDivisionError:整数除以零或模乘零 上述异常是以下异常的直接原因: 回溯(最近一次呼叫最后一次): 文件"&书信电报;stdin>&引用;,第4行,in<;模块>; 运行时错误:发生了一些错误如果在异常处理程序或
finally子句中引发异常,则类似的机制会隐式工作:然后将以前的异常附加为新异常的\uuuuuuu上下文属性:>&燃气轮机&燃气轮机;尝试: ... 打印(1/0) ... 除: ... raise RUNTIMERROR(“发生了错误”) ... 回溯(最近一次呼叫最后一次): 文件"&书信电报;stdin>&引用;,第2行,in<;模块>; ZeroDivisionError:整数除以零或模乘零 在处理上述异常期间,发生了另一个异常: 回溯(最近一次呼叫最后一次): 文件"&书信电报;stdin>&引用;,第4行,in<;模块>; 运行时错误:发生了一些错误
另请参阅内置异常文档,以了解附加到异常的上下文和原因信息的详细信息