sys.exit()
今日、私は子スレッドから呼び出されてもメインプロセスを強制終了しないという事実に反対しました。これまで知らなかったし、大丈夫ですが、気付くまでに長い時間がかかりました。に印刷したとしたら、かなりの時間を節約できたでしょう。しかし、そうではありませんでした。sys.exit(msg)
msg
stderr
それは私のアプリケーションの本当のバグではないことが判明しました。それsys.exit(msg)
は意欲的な方法で意味のあるエラーで呼び出されました-しかし私はこれを見ることができませんでした。
そのためのドキュメントにsys.exit()
は、
「[...]他のオブジェクトが出力されsys.stderr
、終了コードが1になる」と記載されています。
これは、明らかに次
のように動作する子スレッドからの呼び出しには当てはまりません。「SystemExit例外を発生させます。キャッチされない場合、スレッドはサイレントに終了します。 」sys.exit()
thread.exit()
sys.exit(msg)
プログラマーがエラーメッセージを出力したい場合は、呼び出された場所に関係なく、これを出力するだけでよいと思います。なぜだめですか?現在、理由はわかりません。少なくともsys.exit()
、メッセージがスレッドから出力されないというヒントがドキュメントにあるはずです。
どう思いますか?エラーメッセージがスレッドから隠されているのはなぜですか?これは意味がありますか?
よろしくお願いします、
Jan-Philip Gehrcke