【问题标题】:sys.exit('message') isn't printing in IDLEsys.exit('message') 不在 IDLE 中打印
【发布时间】:2015-07-18 11:33:40
【问题描述】:
在 python IDLE 中,使用 sys.exit('') 时它不会打印指定的错误消息,但在 cmd.exe 中会。为什么?
import sys
try:
print fail
except:
sys.exit("This is an example of an error message")
【问题讨论】:
标签:
python-2.7
printing
message
exit
sys
【解决方案1】:
您的错误消息被打印到stderr,它没有显示在 IDLE 中,因为它在子进程中运行(请参阅您的观察的 report 和 related answer)。所以 IDLE 把它写在用来启动 IDLE 的终端上。
文档说明了sys.exit 的论点:
一些系统有一个约定,用于指定特定的含义
特定的退出代码,但这些代码通常不完善; Unix
程序通常使用 2 表示命令行语法错误,使用 1 表示所有
其他类型的错误。如果传递了另一种类型的对象,则 None 是
相当于传递零,任何其他对象都打印到stderr
并导致退出代码为 1。特别是 sys.exit("some error
message") 是发生错误时退出程序的快速方法。
因此,最安全的方法是只传递错误代码并使用额外的print(或调用自定义退出函数,让用户分析发生的情况)。