python - 如何返回值并引发异常

标签 python exception exception-handling return systemexit

这个try/except语句有两个目标。

  1. 如果没有出现问题,它需要返回值 1,如果出现任何问题,则返回 0。
  2. 它需要引发异常并结束脚本。

我有 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/

相关文章:

python - 用动态语言编码视频的好库?

c# - 如何修复 "' System.AggregateException' 出现在 mscorlib.dll 中”

c - Obj-C 中的异常处理

java - 字符串越界异常

asp.net-mvc-3 - ASP.NET MVC 中全局错误/异常处理的最佳实践是什么?

android - ART 在 native 信号处理期间阻止来自 JNI 的任何 Java 调用

Python,用于在字符串中获取文件名的正则表达式

python - python中的全局变量错误

java - 如何获取首页URL链接

java - 现有公共(public)方法的 NoSuchMethodError