2012-04-14 5 views
0

チェックされていない例外をメインからスローすると、プログラムは常にクラッシュしません。私はGUIを実行しているので、私は尋ねています、そして、現在、プログラムをクラッシュさせません。彼らは通常クラッシュするか、特定の状況でのみクラッシュするか?チェックされた例外と同じものがGUIに表示されるJavaのチェックされていない例外がメインからスローされました

スタックオーバフローがクラッシュしたので、この質問が2回掲載されたことに気付かず、2つのコピーがあることが間違っていると感じました。これは同じ質問です。

答えて

5

未チェックの例外をチェックすると、メインスレッドがクラッシュします。ただし、JVMが終了するわけではありません。非デーモン・スレッドが実行されていないときにJVMが終了します。 GUIアプリケーションを実行している場合、UIイベントループは非デーモンスレッドであり、完了するまでJVMを実行したままにします。

+0

メインスレッドが終了し、例外をスローする場合は、チェックしてもチェックしなくても無視されますか? – rubixibuc

+0

これは無視されません。あなたのメインスレッドがクラッシュします。メインスレッドの実行は、例外をスローした時点で停止し、異常終了します(JLSのlingoで)。また、メインのThreadでそれを呼び出す場合は、チェックされたExceptionをmainで宣言する必要があります。例:public static void main(String ... args)は例外をスローします。 –

+0

GUIを作成した後にメインスレッドが終了しないのですが、実行する必要がある他のタスクがない場合は、または、あなたはメインスレッドが現在実行中のスレッドを参照していると言っていますか?メインメソッドから実行されるスレッドではありません。 – rubixibuc

1

チェックアウトされていない例外をメインからスローすると、プログラムがクラッシュすることはありません。技術的な意味で

JVMが深刻な内部エラーが発生し、ファイルにレジスタの内容やその他のあいまいなもののすべての種類を含む、クラッシュダンプを出力すると、クラッシュが発生します。

キャッチされていない例外のためにメインスレッドが終了すると、クラッシュしません。これは、(JVMの観点から)秩序だったシャットダウンです。

チャンドラの回答は、正常にJVMがシャットダウンする方法を説明していますが、System.exit()を呼び出すと、正常にシャットダウンを開始する方法はありません。

0

メインメソッドのすべてのコードをtry-catch(Throwable t)でラップします。それはすべてをキャッチします。

関連する問題