2016-11-19 5 views
1

ここは自分のプログラムです。複数のキャッチブロックを使用した例外処理

try { 
    int a = 1/0; 
} 
catch(Exception e) { 
    system.out.println("Exception block"+e); 
} 
catch(ArithmeticException e) { 
    system.out.println("Inside ArithmeticException block"); 
} 
finally { 
    system.out.println("Inside Finally block"); 
} 

上記のプログラムでは、私は2つのcatchブロックと1つのfinallyブロックを持っています。

どのキャッチブロックが実行されますか?なぜなら私は親のキャッチブロックを最初に定義しているからです。だからそれはエラーにつながる?誰も私を助けることができますか?

私は

+0

あなたの例外のcatchブロック更新され、finallyブロックが実行されます –

答えて

1

Exceptionクラスをキャッチすると、すべてのエラーを与えることはありません「最後にはArithmeticExceptionとは、ブロックが実行される」ことを想定。ただし、推奨されていません。

この場合、Exceptioncatchブロックが最初に実行され、次にfinallyブロックが実行されます。

ArithmeticExceptionブロックを実行する場合は、このブロックをExceptioncatchブロックの前に配置します。

更新コード -

try{ 
     int a = 1/0; 
    }   
    catch(ArithmeticException e){ 
     System.out.println("Inside ArithmeticException block"); 
    } 
    catch(Exception e) { 
     System.out.println("Exception block"+e); 
    } 
    finally{ 
     System.out.println("Inside Finally block"); 
    } 
0

キャッチExceptionクラスは、すべてのエラーを与えることはありません。

この場合、Exception catchブロックが最初に実行され、最後にブロックが実行されます。

ArithmeticExceptionブロックを実行する場合は、このブロックをException catchブロックの前に配置します。

ここでコード

try { 
    int a = 1/0; 
} 
catch(Exception e) { 
    System.out.println("Exception block"+e); 
} 
finally { 
    System.out.println("Inside Finally block"); 
} 
} 
関連する問題