python - Python中的异常传递

标签 python exception-handling

我有一些代码可以进行一些功能性异常处理并且一切正常,当我希望它们出现时会引发异常,但是当我调试时,行跟踪并不总是完全符合我的要求他们去。

示例 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/

相关文章:

python - py2exe 无法识别 jsonschema

python - PyQt、QComboBox 和 QStringModel 导致 QObject::startTimer: QTimer 只能与以 QThread 启动的线程一起使用

python - 创建一个requirements.txt文件

powershell - 计算属性不会在 Powershell 中抛出异常。有哪些解决方法?

exception-handling - 如果发生任何异常,如何执行某事

c++ - 什么时候捕获异常?

python - 如何使用 numba 在 GPU 上推广快速矩阵乘法

python - DataFrame 列的一个元素与所有其他元素之间的比较

c# - 关于异常处理,删除文件的最有效方法是什么?

Java:异常处理