2017-03-10 6 views
2

finallyブロックでは、とは何か例外がスローされましたか?finallyブロックでは、例外がスローされたことを伝えることはできますか?

例外がスローされたかどうかをfinallyブロックで確認できます。

+1

'try'と同じスコープで変数を持つことができ、' catch'の中でスローされた例外に変数を設定することができます。私は、このためのメカニズムが組み込まれているとは思わないし、おそらく、あなたがこれを必要とするならば、あなたが間違った設計について行っていると主張することができるだろう。明らかに、コードが 'finally'を入力したときに例外がスローされなかった可能性があります。 – Carcigenicate

+2

あなたは知る必要はありません。この時点では、クリーンアップにのみ関心があります。例外は既に処理されています。 – EJP

+0

"私は、例外がスローされたかどうかをfinallyブロックで検証できることを理解しています。"余分な作業を必要とせずにcatchブロックまたはtryブロックの最後に設定されている変数を保持しています... –

答えて

5

私はこれを行うために賢明なこと、これまでと思われる状況を想像することはできませんが、このような何かを試すことができます。

class Main { 
    public static void throwsException() throws Exception { 
     throw new Exception(); 
    } 

    public static void main(String[] args) { 
     Exception caughtException = null; 

     try { 
      throwsException(); 
     } 
     catch (Exception e) { 
      caughtException = e; 
      e.printStackTrace(); 
     } 
     finally { 
      System.out.println(caughtException); 
     } 
    } 
} 
0

キャッチブロックとついには、2つの異なるスコープです。 キャッチブロックブロックにキャッチされた例外は、ブロックブロックには表示されません。 Alexanderの答えを使用して、finallyブロックの例外を出力することができます。

関連する問題