我有一個程序如下:的try /終於沒有漁獲物和返回值
public class Main {
public static void main(String[] args)throws Exception
{
int res = test();
System.out.println("after call , res = " + res) ;
}
public static int test()throws Exception
{
try
{
return 10/0;
}
finally
{
System.out.println("finally") ;
}
}
}
上面的程序運行後,下面的結果在控制檯中看到:
finally
Exception in thread "main" java.lang.ArithmeticException:/by zero
at Main.test(Main.java:17)
at Main.main(Main.java:7)
這種現象是正常的,因爲拋出異常以主要方法。
然後我改變代碼如下:
public class Main {
public static void main(String[] args)throws Exception
{
int res = test();
System.out.println("after call , res = " + res) ;
}
public static int test()throws Exception
{
try
{
return 10/0;
}
finally
{
System.out.println("finally") ;
return 20;
}
}
}
當上面的程序運行,我看到控制檯以下結果:
finally
after call , res = 20
我的問題涉及到第二格式。爲什麼當finally塊返回時,異常不會拋出到main方法?
@Tunaki不是。 –
這可能是:http://stackoverflow.com/q/48088/1743880? – Tunaki
請看看:http://stackoverflow.com/questions/48088/returning-from-a-finally-block-in-java – Rehman