2024-04-19 23:37:03 发布
网友
如果退出程序,使用raise有什么意义? 让车祸发生不是同样有效吗?你知道吗
如果省略try-except块,当我除以0并显示原因时,函数会崩溃。或者我不知道还有什么用处?你知道吗
def div(x,y): try: return(x/y) except ZeroDivisionError as problem: raise (problem)
重新引发异常的原因是,在您自己处理异常之后,允许任何代码调用您来处理异常。例如,您已经关闭了正在使用的文件(因为清洁是一种美德),但您的代码无法继续。你知道吗
如果您不打算做任何事情来处理异常,那么不,没有理由为它编写异常处理程序!你知道吗
重新引发异常的正确方法是只使用raise,不带任何参数。这样,无论谁捕捉到异常(或者脚本的用户,如果没有人捕捉到它)都会得到一个正确的堆栈跟踪,该跟踪告诉异常最初是在哪里引发的。你知道吗
raise
我想你的案子效果也一样。但是,您可能希望在出现错误时执行一些附加逻辑(清除等),并可能引发一个不同的(可能是自定义的)错误,而不是原始的系统低级错误,比如消息“数据不正确,请检查您的输入”。这可以通过捕捉错误并提出不同的错误来实现。你知道吗
在这种情况下,使用raise没有意义。通常情况下,你会有一些代码在那里做“其他的事情”-这可能包括输出更多的调试信息,写一些日志数据,用一组不同的参数重试操作,等等
我不确定在您的案例中有多大价值,当一个异常发生时,它只是重新引发它—似乎有人(也许)打算在那里编写某种处理代码,但却从来没有着手过。你知道吗
Python异常处理Wiki>;http://wiki.python.org/moin/HandlingExceptions中提供了一些非常好的异常处理用例示例
重新引发异常的原因是,在您自己处理异常之后,允许任何代码调用您来处理异常。例如,您已经关闭了正在使用的文件(因为清洁是一种美德),但您的代码无法继续。你知道吗
如果您不打算做任何事情来处理异常,那么不,没有理由为它编写异常处理程序!你知道吗
重新引发异常的正确方法是只使用
raise
,不带任何参数。这样,无论谁捕捉到异常(或者脚本的用户,如果没有人捕捉到它)都会得到一个正确的堆栈跟踪,该跟踪告诉异常最初是在哪里引发的。你知道吗我想你的案子效果也一样。但是,您可能希望在出现错误时执行一些附加逻辑(清除等),并可能引发一个不同的(可能是自定义的)错误,而不是原始的系统低级错误,比如消息“数据不正确,请检查您的输入”。这可以通过捕捉错误并提出不同的错误来实现。你知道吗
在这种情况下,使用raise没有意义。通常情况下,你会有一些代码在那里做“其他的事情”-这可能包括输出更多的调试信息,写一些日志数据,用一组不同的参数重试操作,等等
我不确定在您的案例中有多大价值,当一个异常发生时,它只是重新引发它—似乎有人(也许)打算在那里编写某种处理代码,但却从来没有着手过。你知道吗
Python异常处理Wiki>;http://wiki.python.org/moin/HandlingExceptions中提供了一些非常好的异常处理用例示例
相关问题 更多 >
编程相关推荐