"提出错误的目的是什么?"

2024-04-19 23:37:03 发布

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

如果退出程序,使用raise有什么意义? 让车祸发生不是同样有效吗?你知道吗

如果省略try-except块,当我除以0并显示原因时,函数会崩溃。或者我不知道还有什么用处?你知道吗

def div(x,y):
    try:
        return(x/y)
    except ZeroDivisionError as problem:
        raise (problem)

Tags: 函数程序divreturndef原因省略意义
3条回答

重新引发异常的原因是,在您自己处理异常之后,允许任何代码调用您来处理异常。例如,您已经关闭了正在使用的文件(因为清洁是一种美德),但您的代码无法继续。你知道吗

如果您不打算做任何事情来处理异常,那么不,没有理由为它编写异常处理程序!你知道吗

重新引发异常的正确方法是只使用raise,不带任何参数。这样,无论谁捕捉到异常(或者脚本的用户,如果没有人捕捉到它)都会得到一个正确的堆栈跟踪,该跟踪告诉异常最初是在哪里引发的。你知道吗

我想你的案子效果也一样。但是,您可能希望在出现错误时执行一些附加逻辑(清除等),并可能引发一个不同的(可能是自定义的)错误,而不是原始的系统低级错误,比如消息“数据不正确,请检查您的输入”。这可以通过捕捉错误并提出不同的错误来实现。你知道吗

在这种情况下,使用raise没有意义。通常情况下,你会有一些代码在那里做“其他的事情”-这可能包括输出更多的调试信息,写一些日志数据,用一组不同的参数重试操作,等等

我不确定在您的案例中有多大价值,当一个异常发生时,它只是重新引发它—似乎有人(也许)打算在那里编写某种处理代码,但却从来没有着手过。你知道吗

Python异常处理Wiki>;http://wiki.python.org/moin/HandlingExceptions中提供了一些非常好的异常处理用例示例

相关问题 更多 >