【发布时间】:2016-02-21 22:45:14
【问题描述】:
python3 中引入了一个新特性——异常链。由于某些原因,我需要为代码中的某些异常禁用它。
这里是示例代码:
try:
print(10/0)
except ZeroDivisionError as e:
sys.exc_info()
raise AssertionError(str(e))
我所看到的:
Traceback (most recent call last):
File "draft.py", line 19, in main
print(10/0)
ZeroDivisionError: division by zero
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "draft.py", line 26, in <module>
main()
File "draft.py", line 22, in main
raise AssertionError(str(e))
AssertionError: division by zero
我想看的:
Traceback (most recent call last):
File "draft.py", line 26, in <module>
main()
File "draft.py", line 22, in main
raise AssertionError(str(e))
AssertionError: division by zero
我尝试使用sys.exc_clear(),但此方法也已从 python 3 中删除。
我可以使用可行的解决方法
exc = None
try:
print(10/0)
except ZeroDivisionError as e:
exc = e
if exc:
raise AssertionError(str(exc))
但我相信有更好的解决方案。
【问题讨论】:
标签: python python-3.x exception