我有一些代码可以进行一些功能性异常处理并且一切正常,当我希望它们出现时会引发异常,但是当我调试时,行跟踪并不总是完全符合我的要求他们去。
示例 A:
>>> 3/0
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ZeroDivisionError: integer division or modulo by zero
示例 B:
>>> try: 3/0
... except Exception as e: raise e
...
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
ZeroDivisionError: integer division or modulo by zero
在这两个示例中,异常确实发生在第 1 行,我们尝试执行 3/0,但在后一个示例中,我们被告知它发生在第 2 行,它被引发。
在 Python 中有没有办法引发异常,就好像它是另一个异常一样,会产生以下输出:
>>> try: 3/0
... except Exception as e: metaraise(e)
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ZeroDivisionError: integer division or modulo by zero
最佳答案
当您重新引发捕获的异常时,例如
except Exception as e: raise e
它重置堆栈跟踪。这就像重新提出一个新的异常(exception)。你想要的是这样的:
except Exception as e: raise
关于python - Python中的异常传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4730435/