回答:
exitのパラメータは、プログラムの実行が成功したか失敗したかを示します。これは、何かがおかしいのか、何がおかしいのかを知るのに役立つ、古いプログラミング言語の一種の遺伝です。
終了コードは
0
実行がうまくいったとき1
、-1
、whatever != 0
いくつかのエラーが発生したとき、あなたはエラーの異なる種類の異なる値を使用することができます。私が正しい場合、以前は正の数(UNIXでは)で、範囲に応じた終了コードを使用していました。
1-127
ユーザー定義コードです(したがって、を呼び出すことによって生成されますexit(n)
)128-255
SIGSEGVやSIGTERMなどのさまざまなUNIX信号が原因で終了して生成されるコードしかし、Javaでコーディングするときに気にする必要はないと思います。これはほんの少しの情報です。プログラムを標準ツールと相互作用させる場合に便利です。
java MyApp && echo success
、MyAppが0の終了コードを持っている場合、つまりexit(0)
、エラーが発生することなく、メインメソッドの最後を呼び出すか単に終了した場合に、「成功」を出力します。
Zero
=>すべて大丈夫
Positive
=>私が予想していた問題が潜在的に失敗する可能性があります(コマンドラインが不良、ファイルが見つからない、サーバーに接続できない)
Negative
=>まったく予期していなかった問題が発生しました(システムエラー-予期しない例外-外部から強制終了などkill -9
)
(8ビットの符号付きバイナリ、または2の補数と見なすと、128より大きい値は実際には負になります)
ここにはたくさんの良い標準の終了コードがあります
kill -15
)はしばしば終了コード128+signal
になりますが、(9を除いて)処理でき、別の終了コードを返します。-
中にはkill -15
、信号ではなく、PIDとしてマーク番号である、それは信号の否定をしません。
System.exit(-1)
、その後、あなたのシェルでecho $?
、あなたは「255」を取得します。これが、負の数はシステムエラーであり、killパラメーターの「-」が原因ではない、と私が言った理由です。私が思っていることを本気で考えましたか?しかし、Bashがこれらのコードを構築するメカニズムを説明していただきありがとうございます。
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
場合は失敗、実行が失敗した場合はそれ以上。
EXIT_*
Javaには存在しません。
ゼロ以外の終了ステータスコードは、通常、異常終了を示します。ifの場合n != 0
、さまざまなnに意味を適用するのはプログラマ次第です。
https://docs.oracle.com/javase/7/docs/api/java/lang/System.htmlから。
exit(0)
通常、正常終了を示すために使用されます。exit(1)
またはexit(-1)
その他のゼロ以外の値は、一般に終了が失敗したことを示します。
これが答えです。
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
255を超えるエラーコードはエラーコード%256に変換されます。カスタムエラーコード> 255を使用していて、アプリケーションロジックで正確なエラーコードを期待している場合は、特に注意が必要です。 http://www.tldp.org/LDP/abs/html/exitcodes.html
慣例 によりSystem.exit(0)、ゼロ以外のステータスコードは異常終了を示します。
System.exit(1) -何らかのエラーのために終了できなかったことを意味します
class calc{
public static void main(String args[])
{
int a, b, c;
char ch;
do{
Scanner s=new Scanner(System.in);
System.out.print("1. Addition\n");
System.out.print("2. Substraction\n");
System.out.print("3. Multiplication\n");
System.out.print("4. Division\n");
System.out.print("5. Exit\n\n");
System.out.print("Enter your choice : ");
ch=s.next().charAt(0);
switch (ch)
{
case '1' :
Addition chose1=new Addition();
chose1.add();
break;
case '2' :
Substraction chose2=new Substraction();
chose2.sub();
break;
case '3' :
Multiplication chose3= new Multiplication();
chose3.multi();
break;
case '4' :
Division chose4=new Division();
chose4.divi();
break;
case '5' :
System.exit(0);
break;
default :
System.out.print("wrong choice!!!");
break;
}
System.out.print("\n--------------------------\n");
}while(ch !=5);
}
}
上記のコードでは、System.exit(0); ケース5を押すと適切に終了しますが、System.exit(1)を使用すると、そして、ケース5を押すとエラーで終了し、ケース15で試すと正しく終了します。これにより、引数の内部にintを置くと、その位置から文字が取得されることがわかります。つまり、 (4)その文字列から5番目の文字を取得することを意味します(3)場合、その入力文字列から4番目の文字を取得することを意味します