1. 程式人生 > >Python Cookbook(第3版)中文版:14.10 重新拋出被捕獲的異常

Python Cookbook(第3版)中文版:14.10 重新拋出被捕獲的異常

get link www. HR http erl span 鏈接 中文版

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 重新拋出被捕獲的異常