码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2018-03-11 02:30:55      阅读:253      评论:0      收藏:0      [点我收藏+]

标签:人工   AC   recent   执行   val   ali   ...   ISE   form   

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 重新抛出被捕获的异常

标签:人工   AC   recent   执行   val   ali   ...   ISE   form   

原文地址:https://www.cnblogs.com/5rjscn/p/8542853.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!