2

在玩 Java 中的异常处理时,我注意到在 Java 的catch块中执行某些非法运行时操作时不会引发异常。

这是语言中的错误还是我错过了什么?有人可以调查一下吗 - 就像为什么从 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 回答