在python IDLE中,当使用sys.exit('')时,它不会打印指定的错误消息,但在cmd.exe中它会。为什么?
import sys
try:
print fail
except:
sys.exit("This is an example of an error message")
答案 0 :(得分:1)
您的错误消息打印到stderr
,但未显示在IDLE中,因为它在子流程中运行(请参阅此report观察点和此related answer)。所以IDLE将它写在用于启动IDLE的终端上。
文档说明sys.exit
的参数:
某些系统具有为其指定特定含义的约定 具体的退出代码,但这些通常是不发达的; Unix的 程序通常使用2表示命令行语法错误,1表示全部 其他类型的错误。如果传递了另一种类型的对象,则为None 相当于传递零,任何其他对象都打印到stderr 并导致退出代码为1.特别是sys.exit("一些错误 message")是发生错误时退出程序的快捷方法。
因此,最安全的方法是仅传递错误代码并使用额外的print
(或调用自定义退出函数,以便用户对发生的事情进行分析)。