web-dev-qa-db-ja.com

システムの違いJavaのexit(0)、System.exit(-1)、System.exit(1)

Javaで以下の違いを知りたい

System.exit(0);
System.exit(-1);
System.exit(1);

上記のコードを適切に使用する必要があるのはいつですか。

262
giri

Exitのパラメータは、プログラムの実行がうまくいったかどうかを示します。それは古いプログラミング言語からの一種の遺伝であり、何かがうまくいかなかったのか、そして何がうまくいかなかったのかを知るのに役立ちます。

終了コードは

  • 実行がうまくいったときは0
  • 1-1whatever != 0何らかのエラーが発生したときは、エラーの種類ごとに異なる値を使用できます。

私が正しければ、終了コードは正の数(私はUNIXで意味する)であり、範囲によって異なります。

  • 1-127はユーザー定義コードです(exit(n)を呼び出すことによって生成されます)。
  • 128-255は、SIGSEGVまたはSIGTERMのような、異なるunixシグナルによる終了によって生成されたコードです。

しかし、私はあなたがJavaでコーディングしている間気にするべきではないと思います、それはほんの少しの情報です。あなたのプログラムが標準的なツールと対話するようにするつもりなら、それは役に立ちます。

235
Jack

Zero =>すべて大丈夫

Positive =>間違って実行される可能性があるものが間違って実行された(コマンドラインが正しくない、ファイルが見つからない、サーバーに接続できない)

Negative =>まったく期待していなかったことがうまくいかなかった(システムエラー - 予期せぬ例外 - 外部からの強制終了、例えばkill -9

(128を超える値は、8ビット符号付き2進数、または2の補数と見なす場合、実際には負の値になります)

ここにはたくさんの良い 標準終了コードがあります

116
robert

System.exit(system call)は、シャットダウンシーケンスを開始することによって現在実行中のJava仮想マシンを終了します。引数はステータスコードとして機能します。

慣例により、ゼロ以外のステータスコードは異常終了を示します。

  System.exit(0) or EXIT_SUCCESS;  ---> Success
  System.exit(1) or EXIT_FAILURE;  ---> Exception
  System.exit(-1) or EXIT_ERROR;   ---> Error

Java でもっと読む

UnixおよびLinuxシステムでは、実行が成功した場合は0、実行が失敗した場合は1以上が必要です。

46
Premraj

ゼロ以外の終了状況コード。通常は異常終了を示します。 n != 0の場合は、さまざまなnに意味を適用するかどうかはプログラマ次第です。

https://docs.Oracle.com/javase/7/docs/api/Java/lang/System.html から。

11

exit(0)は通常、成功した終了を示すために使用されます。 exit(1)exit(-1)、またはその他のゼロ以外の値は、通常、終了が失敗したことを示します。

3

これが答えです。

System.exit(0);// normal termination - Successful - zero
System.exit(-1);//Exit with some Error
System.exit(1);//one or any positive integer // exit with some Information message
2
Lova Chittumuri

255を超えるエラーコードは、エラーコード%256に変換されます。255を超えるカスタムエラーコードを使用し、アプリケーションロジックで正確なエラーコードを期待する場合は、特に注意が必要です。 http://www.tldp.org/LDP/abs/html/exitcodes.html

2
nomad

他の人が0と答えると成功を意味し、そうでなければ成功します。

Batファイル(ウィンドウ)を使用している場合はSystem.exit(x)が有効になります。

コードJava(myapp):

if (error < 2){
    help();
    System.exit(-1);    
}
else{
    doSomthing();
    System.exit(0);
}

}

バットファイル:

Java -jar myapp.jar
if %errorlevel% neq 0 exit /b %errorlevel%
rem -- next command if myapp is success --
0
nguyên

system.exit()に入れられた数の違いは他の答えで説明されています。しかし本当の違いは、System.exit()が呼び出しプロセスに返されるコードであるということです。プログラムがオペレーティングシステムによって呼び出されている場合、戻りコードは、system.exit()がすべて正常であるよりも0を返した場合、問題がない場合は、親プロセスにハンドラがある可能性があることをOSに伝えます。

0
parsa