今天我跑了反對的事實,即sys.exit()
從兒童線程調用不殺的主要過程。我以前不知道這一點,這沒關係,但我需要很長時間才能認識到這一點。這將有可能挽救太多太多的時間,如果sys.exit(msg)
會打印msg
到stderr
。但事實並非如此。Python:爲什麼從線程調用`sys.exit(msg)`不會打印`msg`到stderr?
原來,這是不是在我的應用程序中的真正的bug;它以一種有意義的錯誤方式稱爲sys.exit(msg)
- 但我無法看到這一點。
In the docs for sys.exit()
it is stated: 「[...]的任何其他對象被打印到sys.stderr
和結果在1退出代碼」
這不用於從子線程的調用真實,其中sys.exit()
明顯表現爲thread.exit()
: 「提高SystemExit例外,如果沒有捕獲,這將導致線程退出默默。」
我認爲當一個程序員想要sys.exit(msg)
打印錯誤消息,那麼這應該只是印刷 - 獨立於它被稱爲地方。爲什麼不?我目前沒有看到任何理由。至少應該在sys.exit()
的文檔中提示該消息不是從線程打印的。
您認爲如何?爲什麼錯誤消息隱藏在線程中?這有意義嗎?
最好的問候,
揚菲利普Gehrcke
你給了我一個很好的建議,再次;) 順便說一句:這是如此之大,你在這裏分享你的知識。我發現你目前花大部分時間用純Python專家來填補這個平臺!這是社區需要的,但這不是理所當然的事情。非常非常感謝你! Jan-Philip – 2009-07-30 21:46:29