Python语言重新引发异常
示例
有时您想要捕获一个异常只是为了对其进行检查,例如出于记录目的。检查之后,您希望异常像以前一样继续传播。
在这种情况下,只需使用raise不带参数的语句。
try:
5 / 0
except ZeroDivisionError:
print("Got an error")
raise但是请记住,调用者堆栈中更远的某个人仍然可以捕获异常并以某种方式处理它。在这种情况下,完成的输出可能会很麻烦,因为在任何情况下(捕获或未捕获)它都会发生。因此,提出一个不同的异常可能是一个更好的主意,其中包含您对情况的评论以及原始异常:
try:
5 / 0
except ZeroDivisionError as e:
raise ZeroDivisionError("Got an error", e)但这有一个缺点,就是将异常跟踪精确地减少到此范围raise,raise而无参数保留原始异常跟踪。
在Python3中,您可以使用raise-from语法保留原始堆栈:
raise ZeroDivisionError("Got an error") from e
热门推荐
10 财运虎年祝福语简短语
11 单亲爸爸春节祝福语简短
12 狗狗上厕所训练
13 植物种植祝福语简短
14 翻译考试祝福语朋友简短
15 个人周年庆简短祝福语
16 狗狗怎么训练
17 分别祝福语简短搞笑英文
18 生日广州男生祝福语简短