python 重新抛出上一个异常

14.6 我们在except块中捕获一个异常,现在将它重新抛出

  • 可以使用raise语句
>>> def e():
...     try:
...         int('N/A')
...     except ValueError:
...         print("didn`t work")
...         raise
... 
>>> e()
didn`t work
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 3, in e
ValueError: invalid literal for int() with base 10: 'N/A'
>>> 

  • 这种情况通常出现在需要对某个异常做响应(比如记录日志,完成清理工作等)
  • 但这之后希望将异常再传播出去。一个非常常见的用途就是用在捕获所有异常的处理中
>>> def e():
...     try:
...         int('N/A')
...     except Exception as e:
...         # 做一些记录日志等的处理,然后继续抛出异常
...         raise
... 
>>> e()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 3, in e
ValueError: invalid literal for int() with base 10: 'N/A'
>>> 

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容