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. 次のコードが終了しないのはなぜですか?
- 3. なぜこのHaskellコードは終了しないのですか?
- 4. なぜ私のコードは説明なしで終了するのですか?
- 5. なぜ終了コード201が表示されるのですか?
- 6. なぜ8051プログラムは "LOOP:SJMP LOOP"というコードで終了するのですか?
- 7. HibernateがJavaプロセスをブロックして終了するのはなぜですか?
- 8. コードカバレッジ:終了マーカーが赤くなるのはなぜですか(終了、終了、など)
- 9. なぜ、リシェイプコードはglMatrixMode(GL_MODELVIEW)で終了するのですか?
- 10. Java enumを最終的に使用できないのはなぜですか?
- 11. .tryメソッドがプログラムを終了するのはなぜですか?
- 12. なぜ終了ですか(42)?
- 13. なぜこのプログラムは終了しないのですか? Javaへ
- 14. このJavaプロセスが終了しないのはなぜですか?
- 15. 終了時にこのJavaプログラムが閉じないのはなぜですか?
- 16. Java Beginner、なぜ私のプログラムは終了しますか?
- 17. コード15で終了する
- 18. コールオペレータを使用してゼロ以外の終了コードがある場合、PowerShellスクリプトが終了しないのはなぜですか?
- 19. 終了コード0でナイトウォッチキュウリのプロセスを終了しますか?
- 20. 終了コード0で終了したプロセスjava
- 21. JavaはどのようにJava内の終了コードをキャッチできますか?
- 22. スレッドが終了するのはなぜですか?
- 23. ループが終了するのはなぜですか?
- 24. セッションが終了するのはなぜですか?
- 25. なぜscanfでこのループが終了するのですか?
- 26. Java;文章で終了したコード
- 27. PreferenceScreenが強制終了させるのはなぜですか?
- 28. DartEditor.exeとjava終了コード1
- 29. Java終了コードと意味
- 30. ループ条件がまだ有効であっても、コードが終了コード:0で終了するのはなぜですか?
あります。 –
なぜすべてのdownvotes? – arshajii
可能性重複http://stackoverflow.com/q/457338/668970 – developer