如何在python中抛出错误并使用自定义消息退出

Posted

技术标签:

【中文标题】如何在python中抛出错误并使用自定义消息退出【英文标题】:How to throw error and exit with a custom message in python 【发布时间】:2014-05-03 05:38:02 【问题描述】:

我看到有人建议在 Python 中使用 sys.exit()。 我的问题是,有没有其他方法可以退出当前脚本的执行,我的意思是终止,出现错误。

类似这样的:

sys.exit("You can not have three process at the same time.")

目前我的解决方案是:

print("You can not have three process at the same time.")
sys.exit()

【问题讨论】:

引发异常?对于这样的错误消息,我会写信给sys.stderrprint('You can not have three processes at the same time.', file=sys.stderr),并使用sys.exit(1) 表示错误退出代码。 docs.python.org/2/tutorial/errors.html 或许 【参考方案1】:

使用字符串调用sys.exit 会起作用。 docs 明确提到了这种用法:

特别是 sys.exit("some error message") 是在发生错误时快速退出程序的方法。

【讨论】:

只是从 python 文档中强调了使用 sys.exit("some error message") 的一个重要点。如果传递了另一种类型的对象,则 None 等效于传递零,并且任何其他对象都被打印到 stderr 并导致退出代码 1【参考方案2】:

有 3 种方法,lvc 提到的第一种方法是使用 sys.exit

sys.exit('My error message')

第二种方式是使用print,print几乎可以写任何东西,包括错误信息

print >>sys.stderr, "fatal error"     # Python 2.x
print("fatal error", file=sys.stderr) # Python 3.x

第三种方法是引发我不喜欢的异常,因为它可以是try-catch

  raise SystemExit('error in code want to exit')

可以这样忽略

try:
  raise SystemExit('error in code want to exit')
except:
  print("program is still open")

【讨论】:

【参考方案3】:

我知道这是一个旧线程,但是您也可以引发这样的错误:

raise SystemExit('Error: 3 个进程不能同时运行。')

这种方法的一个优点是您不必导入 Python sys 模块。这适用于具有 Python 3 和 Python 2 的 Linux。我尚未在 Windows 或 Mac OS 上对其进行测试。

【讨论】:

在 macos w pyenv 2 和 3 上为我工作 适用于 Windows 10【参考方案4】:

你必须先使用import sys

然后使用sys.exit("your custom error message")

【讨论】:

以上是关于如何在python中抛出错误并使用自定义消息退出的主要内容,如果未能解决你的问题,请参考以下文章

在逃避关闭的函数中抛出错误

在 Azure PowerShell 中显示自定义错误消息并退出

如何使用自定义 html 消息在出错时退出 php

在 Angular 应用程序中抛出错误

JCRExportCommand execute() 在 magnolia cms 中抛出异常错误

在Swift 2中使用自定义消息抛出错误/异常的最简单方法?