6

Java ではSystem.exit(int)、プログラムを終了するために使用します。C の「終了値」の理由は、プログラムのエラーをチェックするために終了値が使用されたためです。しかし、Java では例外がスローされることでエラーが反映されるため、簡単に処理できます。では、なぜ Java に終了値があるのでしょうか。

4

4 に答える 4

14

exit values are returned to the calling program e.g. the shell. An Exception cannot be caught by an external program.

BTW When you throw an Exception it is caught by that thread or that thread dies, the finally blocks are still called for that thread. When you call System.exit(), all threads stop immediately and finally blocks are not called.

于 2012-12-26T13:48:36.100 に答える
3

同じ理由で。

終了コードは、デバッグおよび処理の目的で、プログラムの外部の関係者およびアプリケーションによって排他的に使用されます。スーパー アプリケーションは、スタック トレースを解析するよりも確実にリターン コードを適切に処理できます。

また、エンドユーザー向けのアプリケーションを作成している場合は、スタック トレース情報を大量に投稿するよりも、アプリを正常に終了した方がよいでしょう。理由はいくつかあります。 -技術的に意味不明なように見える、そして 2 つのスタック トレースは、多くの場合、プログラムが基本的に構造化されている方法に関する機密情報や機密情報を明らかにします (潜在的な攻撃者にシステムに関するより多くの知識を与えます)。

実際の例として、ジョブに終了コードを使用する Java Batch プログラムに取り組んでいました。ユーザーは、終了コードが「0」であるかどうかに基づいて、ジョブが正常に実行されたかどうかを確認できました。それ以外の場合は、終了コードの追加情報を用意してテクニカル サポートに連絡することができます。ヘルプ デスクは、その終了コードに基づいて必要なすべての情報を提供し、彼らを支援します。技術者ではないエンドユーザーに「オーケー、どのような例外が発生していますか?」と尋ねるよりもはるかにうまく機能します。

于 2012-12-26T13:51:19.777 に答える
0

終了値は呼び出し元に返され、プログラムの成功または失敗の完了を知らせます。呼び出し元は、例外をキャッチして適切に処理できない場合があります。

たとえば。0 の終了値は正常に完了したことを意味し、0 以外の戻り値は実行中に何らかのエラーが発生したことを意味します。

また、 System.exit() は、アプリケーション内のすべてのスレッドをその時点で停止させます。

于 2012-12-26T13:50:01.163 に答える
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です

于 2012-12-26T14:43:45.883 に答える