今天我遇到了这样一个事实,即sys.exit()
从子线程调用不会杀死主进程。我以前不知道这一点,这没关系,但我需要很长时间才能意识到这一点。如果可以打印到,它会节省很多时间。但它没有。sys.exit(msg)
msg
stderr
事实证明,这不是我的应用程序中的真正错误。它以一种有意识的方式调用sys.exit(msg)
了一个有意义的错误——但我就是看不到这一点。
在sys.exit()
它的文档中声明:
“[...] 任何其他对象都被打印到sys.stderr
并导致退出代码为 1”
对于来自子线程的调用,情况并非如此,其中显然表现sys.exit()
为thread.exit()
:
“引发 SystemExit 异常。如果没有被捕获,这将导致线程静默退出”
我认为当程序员想要sys.exit(msg)
打印一条错误消息时,应该只打印它——与调用它的位置无关。为什么不?我目前看不出任何原因。至少文档中应该有一个提示,sys.exit()
即消息不是从线程中打印出来的。
你怎么看?为什么从线程中隐藏错误消息?这有意义吗?
最好的祝福,
扬-菲利普·格尔克