在except块中引发异常并禁止firs

2024-10-01 13:33:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图捕捉异常并在代码中的某个点引发更具体的错误:

try:
  something_crazy()
except SomeReallyVagueError:
  raise ABetterError('message')

这在Python 2中有效,但在Python 3中,它显示两个异常:

^{pr2}$

有没有什么方法可以绕过这个问题,从而不显示SomeReallyVagueError的回溯?在


Tags: 方法代码message错误somethingraisetryexcept
1条回答
网友
1楼 · 发布于 2024-10-01 13:33:40

在Python 3.3及更高版本中,可以使用^{}语法来抑制第一个异常的回溯:

>>> try:
...     1/0
... except ZeroDivisionError:
...     raise ValueError
...
Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
ZeroDivisionError: division by zero

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 4, in <module>
ValueError
>>>
>>>
>>> try:
...     1/0
... except ZeroDivisionError:
...     raise ValueError from None
...
Traceback (most recent call last):
  File "<stdin>", line 4, in <module>
ValueError
>>>

相关问题 更多 >