在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));
}
}
答案 0 :(得分:12)
这是语言中的错误还是我错过了什么?
这是因为您的return
区块中包含finally
语句:
finally {
System.out.println("hi");
return a;
}
这个return
语句有效地吞下了异常,“覆盖它”并返回了值。