2

Javaで例外処理を実行しているときに、Javaのcatchブロックで不正なランタイム操作が実行されても、例外がスローされないことに気付きました。

それは言語のバグですか、それとも何かが足りないのですか?誰かがそれを調べてください-キャッチブロックから例外がスローされない理由のように。

public class DivideDemo {

    @SuppressWarnings("finally")

    public static int divide(int a, int b){

    try{
       a = a/b;
    }
    catch(ArithmeticException e){
       System.out.println("Recomputing value");

       /* excepting an exception in the code below*/
       b=0;
       a = a/b;
       System.out.println(a);
    }
    finally{
      System.out.println("hi");
      return a;
    }
  }    
  public static void main(String[] args) {
     System.out.println("Dividing two nos");
     System.out.println(divide(100,0));
  }

}

4

1 に答える 1

12

それは言語のバグですか、それとも何かが足りないのですか?

これは、ブロックにreturnステートメントがあるためです。finally

finally {
  System.out.println("hi");
  return a;
}

このreturnステートメントは、例外を効果的に飲み込み、戻り値で「それをオーバーライド」します。

も参照してください

于 2012-10-16T18:37:38.657 に答える