終了する前に.netプログラムが明示的に終了コードを設定することができない場合(Environment.Exit()
/Appliation.Current.Shutdown()
/...を呼び出して)、そのプロセスの終了コードは何ですか?Environment.Exit()が使用されていないときに、.netプログラムが持つ終了コードはどれですか?
正常終了は常に終了コードゼロとなりますが、その他の可能性のあるケースは何ですか?
はハンスアンパッサンによる関連質問Getting ExitCode From Exception Handlerにthis answerによると:「プログラムが例外で死ぬ場合その終了コードは、基礎となる例外エラーコードとして通常同じです」。
したがって、例外を除いて、終了コードを使用することができます。このは常にの場合で、基本的な例外エラーコードであるは、とは異なり、特定の範囲で常に保証されますか?
.netフレームワークまたはWindowsが、例外ではないクラッシュ(それは可能ですか?)や強制的なタスクの強制終了など、別の終了コードを自動的に設定できる状況がありますか?
別の言い方をすれば、プログラムが異常な方法で終了したかどうかを終了コードで判断できますか?
また、いくつかの異常なケースでも終了コード0が発生する可能性がある場合は、プログラムのすべての通常の終了パスにEnvironment.Exit(somevalue)
を含めることができますか?そして、この終了コードはクラッシュ時には発生しないことを確認しますか?
動機づけ:重度の回避策せずnot all exeptions are catchableので
、およびすべてのコードパスがEnvironment.Exit()はalwas不可能である呼び出すことを確認して、キャッチされないexcpetions以外の突然のプログラム終了のための他の原因があるかもしれないからです。このため、プログラムが正常に終了したかどうかを確実に判断するために終了コードを使用できるかどうかを判断することに興味があります。
私は私の質問と提案された複製との違いを加えました。 2番目の答えはまた私の質問の一部に役立ちますが、それは完全にそれに答えるものではなく、質問自体は全く異なります。 – HugoRune
Tangental suggestion:Windowsエラー報告を有効にし、ミニダンプを有効にするオプションを有効にします。こうすることで、終了コードだけでなく、デバッガを通過できる例外レコードと部分スタックも取得できます。 (WinDBGのように、SOSデバッガを使用します。)ミニダンプを使用しなくても、WERはエラーメッセージ自体に関する情報を取得します。内部アプリケーションの場合、クラッシュレポートが自動的に送信されるようにサーバーを設定することもできます。 TechNetの[ページ](https://technet.microsoft.com/en-us/library/cc709644.aspx)には概要があります。 – theB
終了コードはかなり役に立たないIMHOです。その他の情報:http://stackoverflow.com/questions/4344923/process-exit-code-when-process-is-killed-forcibly –