在引发异常后,python回溯如何运行?
我对以下行为感到惊讶:在引发异常后,python回溯如何运行?,python,Python,我对以下行为感到惊讶: import traceback raise Exception('dogs') traceback.print_exc() print('cat') #=>成功打印回溯,不打印cat import traceback raise Exception('dogs') # traceback.print_exc() print('cat') #=>也不打印cat import traceback raise Exception('dogs') # traceba
import traceback
raise Exception('dogs')
traceback.print_exc()
print('cat')
#=>成功打印回溯,不打印cat
import traceback
raise Exception('dogs')
# traceback.print_exc()
print('cat')
#=>也不打印cat
import traceback
raise Exception('dogs')
# traceback.print_exc()
print('cat')
那么这里到底发生了什么?traceback.print_exc()模块和print()之间有什么区别?我发现令人惊讶的是,显然有些函数可以在引发异常后运行,而其他函数则不能
任何想法都值得赞赏
谢谢。当引发异常时,控制流将更改。除非捕获异常,否则引发异常的行下面的所有语句都不会执行 回溯用于打印堆栈跟踪- 输出:
In [5]: import traceback
...:
...: try:
...: raise Exception('dogs')
...: except:
...: traceback.print_exc()
...: print('cat')
...:
Traceback (most recent call last):
File "<ipython-input-5-3599c128a12e>", line 4, in <module>
raise Exception('dogs')
Exception: dogs
cat
[5]中的:导入回溯
...:
…:试试看:
…:引发异常('dogs'))
…:除:
…:traceback.print_exc()
…:打印('cat'))
...:
回溯(最近一次呼叫最后一次):
文件“”,第4行,在
引发异常(“狗”)
例外:狗
猫
回溯。print\u exc()
与打印回溯无关。这是自动发生的。在第一个示例中,raise Exception
记录回溯,因为没有捕获到它,所以,raise
之后的所有内容都没有执行,因为解释器正在退出,因为存在未捕获的异常(第二个示例也是如此)您可能需要使用try
/finally
子句。请阅读本教程: