这个try / except语句有两个目标.
>如果没有问题,则需要返回值1,如果发生任何问题,则返回0.
>它需要引发异常并结束脚本.
我有返回值工作.我也有SystemExit()工作.但是在一起,他们没有工作.
我的Python脚本(相关):
except IOError:
value_to_return = 0
return value_to_return
raise SystemExit("FOOBAR")
有了它,它完全忽略了提升SystemExit(“FOOBAR”)行.如何获取返回值并仍然提升SystemExit(“FOOBAR”)?对某些人来说这可能是基本的,但实际上我遇到了很多困难.
解决方法:
回归和提高是相互排斥的.
提升SystemExit将结束脚本.一些清理例程可以运行,如果调用者确实想要,他们可以捕获SystemExit并取消它,但大多数情况下,你可以把它想象为停止执行.调用者永远不会有机会看到返回值或做任何有意义的事情.
返回意味着您希望脚本继续.继续可能意味着让调用者提升SystemExit,或者它可能意味着忽略错误,或者它可能意味着其他东西.无论它意味着什么取决于你,因为你是编写代码的人.
最后,你确定你应该处理这个错误吗?仅捕获异常以将其变为系统关闭可能不是最有用的行为.它不是一种用户友好的方法来处理问题,它隐藏了从堆栈跟踪中获得的所有有用的调试信息.
标签:python,exception,return,exception-handling,systemexit