这个try
/except
语句有两个目标。
- 如果没有出现问题,它需要
返回
值 1,如果出现任何问题,则返回 0。 - 它需要引发异常并结束脚本。
我有 return
值。我也有 SystemExit()
工作。但放在一起,它们不起作用。
我的 Python 脚本(相关):
except IOError:
value_to_return = 0
return value_to_return
raise SystemExit("FOOBAR")
这样,它就完全忽略了 raise SystemExit("FOOBAR")
行。如何获取返回值并仍然raise SystemExit("FOOBAR")
?这对某些人来说可能是基础知识,但实际上我对此有相当大的困难。
最佳答案
返回和提高是互斥的。
触发 SystemExit
将结束脚本。一些清理例程开始运行,如果调用者真的非常想要,他们可以捕获 SystemExit
并取消它,但大多数情况下,您可以将其视为立即停止执行。调用者将永远没有机会看到返回值或对其执行任何有意义的操作。
返回意味着您希望脚本继续。继续可能意味着让调用者引发 SystemExit
,或者可能意味着忽略错误,或者它可能意味着其他东西。这意味着什么取决于您,因为您是编写代码的人。
最后,你确定你应该处理这个错误吗?捕获异常只是为了将其变成系统关闭可能不是最有用的行为。这不是一种处理问题的用户友好方式,它隐藏了您从堆栈跟踪中获得的所有有用的调试信息。
关于python - 如何返回值并引发异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21246867/