在引发异常后,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
子句。请阅读本教程: