Python Cookbook(第3版)中文版:14.10 重新抛出被捕获的异常

Posted 5rjscn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python Cookbook(第3版)中文版:14.10 重新抛出被捕获的异常相关的知识,希望对你有一定的参考价值。

14.10 重新抛出被捕获的异常?

问题?

你在一个 except 块中捕获了一个异常,现在想重新抛出它。

解决方案?

简单的使用一个单独的 rasie 语句即可,例如:

>>> def example():
...     try:
...             int(‘N/A‘)
...     except ValueError:
...             print("Didn‘t work")
...             raise
...

>>> example()
Didn‘t work
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 3, in example
ValueError: invalid literal for int() with base 10: ‘N/A‘
>>>

讨论?

这个问题通常是当你需要在捕获异常后执行某个操作(比如记录日志、清理等),但是之后想将异常传播下去。
一个很常见的用法是在捕获所有异常的处理器中:

try:
   ...
except Exception as e:
   # Process exception information in some way
   ...

   # Propagate the exception
   raise

艾伯特(http://www.aibbt.com/)国内第一家人工智能门户


以上是关于Python Cookbook(第3版)中文版:14.10 重新抛出被捕获的异常的主要内容,如果未能解决你的问题,请参考以下文章

Python Cookbook(第3版)中文版:15.1 使用ctypes访问C代码

Python Cookbook(第3版) 中文版 pdf完整版高清下载

Python Cookbook(第3版) 中文版 pdf完整版高清下载

Python Cookbook(第3版) 中文版 pdf完整版高清下载

Python Cookbook(第3版)中文版:15.10 用Cython包装C代码

Python Cookbook(第3版)中文版:14.10 重新抛出被捕获的异常