Javaでは、System.exit(int)
を使用してプログラムを終了します。 Cの「終了値」の理由は、終了値がプログラムのエラーをチェックするために使用されたためです。しかしJavaでは、例外がスローされることによってエラーが反映されるため、簡単に処理できます。なぜJavaでは終了値を持つのでしょうか?Javaで終了コードを使用するのはなぜですか?
答えて
終了値は呼び出し元のプログラムに返されます。シェル。例外は外部プログラムによって捕らえられません。
BTW例外をスローすると、そのスレッドによってキャッチされるか、そのスレッドが終了したときに、finally
ブロックが引き続きそのスレッドに対して呼び出されます。 System.exit()を呼び出すと、すべてのスレッドが直ちに停止し、最後にブロックが呼び出されません。
終了値が呼び出し元に返され、プログラムの正常終了または不完全終了を通知します。呼び出し元は、例外を捕捉してそれに応じて処理することができない場合があります。
たとえば、 0終了値は正常終了を意味し、0以外の戻り値は実行中の何らかのエラーを意味する。
また、System.exit()は、アプリケーション内のすべてのスレッドをその時点で停止させます。
同じ理由で。
終了コードは、デバッグおよび処理の目的で、プログラムの外部のパーティーおよびアプリケーションによって排他的に使用されます。スーパーアプリケーションは、スタックトレースを解析しようとするよりも、戻りコードを確実に処理することができます。
また、エンドユーザー用のアプリケーションを作成する場合は、スタックトレース情報の束を投稿するよりも、アプリから正常に終了する方がよいでしょう。その理由のいくつかは、 2つのスタックトレースは、プログラムが基本的に構造化されている方法(潜在的な攻撃者にシステムに関する知識を与える)に関する機密情報を機密情報として明らかにします。
現実的な例として、ジョブの終了コードを使用するJavaバッチプログラムを作成していました。ユーザーは、終了コードが「0」であるかどうかに基づいてジョブが正常に実行されたかどうかを確認できます。それ以外のものであれば、テクニカルサポートに連絡して、終了コードの追加情報を入手することができ、ヘルプデスクは、その終了コードに基づいて必要な情報をすべて手に入れて手伝ってくれます。それは技術的でないエンドユーザーに "オッケー、どういう例外がありますか?"と尋ねることよりもはるかにうまく機能します。
簡潔に言えば、終了コードは、Javaプログラムの実行中に例外を検出したユーザーに簡略化した信号です。ほとんどのユーザーは例外のスタックトレースデータを理解していないと仮定しているので、これらの単純で非ゼロのカスタムコードは何かが間違っていることを通知し、ベンダーに報告する必要があります。したがって、ベンダーはコードを取得し、そのコードに関連付けられたスタックトレースを認識し、システムを修復しようとします。これは、ユーザーが大量のスタックトレースを読み込んだり報告したりする必要がないように、プログラマによって提供される抽象化です。ここでの非常に良い例は、SQLExceptionクラスのgetErrorCode()メソッドです。このメソッドは、クライアントマシン上で実行されている現在のJVMも閉じます。これは、これにより、JVMにあるすべてのスレッドが終了することを意味します。このメソッドは、Java.lang.Runtimeクラスのexitメソッドを呼び出します。この方法のドキュメントに進むと、仮想マシンがどのようにシャットダウンされているかがわかります。
これは、終了値は、オペレーティングシステムに指定されたリンク
http://docs.oracle.com/javase/6/docs/api/java/lang/Runtime.html#exit%28int%29- 1. コードがすぐに終了するのはなぜですか?
- 2. なぜこのHaskellコードは終了しないのですか?
- 3. コードカバレッジ:終了マーカーが赤くなるのはなぜですか(終了、終了、など)
- 4. なぜ、リシェイプコードはglMatrixMode(GL_MODELVIEW)で終了するのですか?
- 5. Java enumを最終的に使用できないのはなぜですか?
- 6. .tryメソッドがプログラムを終了するのはなぜですか?
- 7. コード15で終了する
- 8. このJavaプロセスが終了しないのはなぜですか?
- 9. スレッドが終了するのはなぜですか?
- 10. セッションが終了するのはなぜですか?
- 11. DartEditor.exeとjava終了コード1
- 12. Java終了コードと意味
- 13. PreferenceScreenが強制終了させるのはなぜですか?
- 14. なぜwhileループは終了しないのですか?
- 15. whileループが終了しないのはなぜですか?
- 16. 成功した終了コードでJobExecutionDeciderを終了する方法
- 17. デーモンプログラムがjoin()を使わずに終了しないのはなぜですか?
- 18. Javaコードでアプリケーションを終了/停止する
- 19. Javaを使用したプログラムの終了
- 20. プログラムでJavaのプロセスを終了する
- 21. java文がセミコロンで終了するとエラーになるのはなぜですか?
- 22. 終了時にドッカーのexecがnohupプロセスを強制終了するのはなぜですか?
- 23. なぜこのQTアプリはSIGABRTシグナルで終了しますか?
- 24. なぜRubyスレッドを終了すると私のプログラム全体が終了するのですか?
- 25. なぜこのコードは計算機クラスの終了後にコマンドを入力できないのですか?
- 26. Moose make_immutableがこのスクリプトを強制終了するのはなぜですか? perlの5.8.8を使用して
- 27. アクティビティを終了するときにクラッシュするのはなぜですか?
- 28. ブラックベリーブラウザを終了するコード
- 29. 私のアプリケーションが "SIGABRT"で終了するのはなぜですか?
- 30. 私のPerlスクリプトが137で終了するのはなぜですか?
あります。 –
なぜすべてのdownvotes? – arshajii
可能性重複http://stackoverflow.com/q/457338/668970 – developer