Java プログラムを実行するためにいくつかの前提条件が存在するかどうかを確認したい場合、何が最適ですか?
行う:
System.exit(1);
または、メインスレッドを終了するためにスローしRuntimeException
ますか? main
(他のスレッドはまだ実行されていません)
Java プログラムを実行するためにいくつかの前提条件が存在するかどうかを確認したい場合、何が最適ですか?
行う:
System.exit(1);
または、メインスレッドを終了するためにスローしRuntimeException
ますか? main
(他のスレッドはまだ実行されていません)
理想的には、スレッドを正常に終了します。System.exit(1)
も動作しますが、実行中の処理を停止し、実行中の処理を終了して終了する (つまり、最後までメソッドを実行する) 必要があることをスレッドが通知された方がよいでしょう。それは明らかにあなたのデザインに依存します。
をスローするのRuntimeException
はあまりにも無礼に思え、実際には望んでいない行動につながる可能性があります。
スタック トレースが必要な場合は、を使用してください。RuntimeException
そうでない場合System.exit(1)
は、よりクリーンです。
exit
プログラミング フローでエラーをキャッチし、それに応じてエラーを処理するために例外が使用されるため、呼び出したほうがよいでしょう。
ユーザーの観点から見ると、アプリケーションを問題に出力してから適切に閉じることは、スタック トレースや、ユーザーが理解する必要のないSystem.err
ような他のコード表記を見るよりもはるかに直感的です。EXCEPTION
あなたが投稿したものよりも多くの情報を持っていないので、次のようにします:
public static void main(String[] args) {
boolean precondition = ... // determine your precondition here
if (precondition) {
// run program
} else {
System.out.println("Preconditions not satisfied.");
}
}
どちらでもよいのですが、誤解を招く可能性があるためSystem.exit()
、を使用することをお勧めします。RuntimeException
強制退出は絶対にしないでください。アプリケーションがメソッドを使い果たし、自動的に閉じることができるように、ランタイム メソッドをプログラムします。構造適用の前にグラフを描くことをお勧めします。