擅长:python、mysql、java
<p>成语</p>
<pre><code>try:
...
except SomeException:
...
raise
</code></pre>
<p>@normaldotcom所提到的重新抛出已按原样捕获的错误,而不做任何修改。它不会回答OP,“<em>如何创建一个新的异常,该异常包含有关已捕获的异常的信息”。</p>
<p>实际上,在某些情况下,人们希望创建一个新的异常,通常是将许多可能的内部错误源重新组合为一个具有更清晰消息的异常,同时仍保留对原始错误的回溯以启用调试。</p>
<p>实现这一点的方法是通过<a href="https://docs.python.org/3/library/exceptions.html#BaseException.with_traceback" rel="nofollow noreferrer">^{<cd1>} method of ^{<cd2>}</a>。例如</p>
<pre><code>import sys
try:
raise ValueError('internal error message')
except ValueError:
tb = sys.exc_info()[2]
raise Exception('new error message').with_traceback(tb)
</code></pre>