Perl、Python、C ++、またはTclプログラムが未処理の例外で停止するたびに、これらの言語ランタイムはプロセスにゼロ以外の終了コードを登録するように注意します。Eclipseベースのプログラムでさえ、起動中に失敗すると1を返します。java.exe
しかし、標準で実行されるプログラムは、プログラムがSystem.exit()
終了値で呼び出されない限り、どんなに突然終了しても喜んでゼロを返します。でもAssertionFailedError
またはがUnsatisfiedLinkError
成功して終了として呼び出し元のプログラムに戻って報告されています。
もちろん、すべてのシステムにプログラムのリターンコードがあるわけではありませんが、UnixとWindowsはjava.lang.Process.exitValue()
、子プロセスを保証するのに十分なほど重要でした。親プロセスの規約を順守することも保証されませんか?
これは言語設計の欠陥ですか、それとも実装の欠陥ですか?それは良いアイデアだという議論はありますか?
これがStackOverflowに適しているとは思えません...
—
ギャブリン
@gablinうーん、確かに私はSOでこの質問を書き始めて、気が変わってここに投稿しました。
—
ジェームズ