当前位置: 技术问答>java相关
关于异常处理中的finally块的问题·~
来源: 互联网 发布时间:2015-10-19
本文导语: class Foo{ public static void main(String[] args){ try{System.exit(0);} finally{System.out.println("Finally");} } } =================================== 执行之后没有任何输出。 不是说finally{}中的语句...
class Foo{
public static void main(String[] args){
try{System.exit(0);}
finally{System.out.println("Finally");}
}
}
===================================
执行之后没有任何输出。
不是说finally{}中的语句一定会运行的吗??
怎么解释?
public static void main(String[] args){
try{System.exit(0);}
finally{System.out.println("Finally");}
}
}
===================================
执行之后没有任何输出。
不是说finally{}中的语句一定会运行的吗??
怎么解释?
|
你可以做个测试,测试程序如下:
import java.lang.*;
public class fina
{
public static void main(String[] args)
{
try
{
}
finally
{
System.out.println("Hello World!");
}
try
{
throw new Exception("Exception");
}
catch(Exception e)
{
System.out.println("Catch Exception");
}
finally
{
System.out.println("finally!");
}
}
}
import java.lang.*;
public class fina
{
public static void main(String[] args)
{
try
{
}
finally
{
System.out.println("Hello World!");
}
try
{
throw new Exception("Exception");
}
catch(Exception e)
{
System.out.println("Catch Exception");
}
finally
{
System.out.println("finally!");
}
}
}
|
System.exit(0);
是退出系统了,当然不能运行输出语句啦!
说finally中的语句一定能运行指的是针对可捕捉的异常处理,对于非可捕捉的仍然是无能为力
是退出系统了,当然不能运行输出语句啦!
说finally中的语句一定能运行指的是针对可捕捉的异常处理,对于非可捕捉的仍然是无能为力
|
这个问题好象很久就有争论了:
finally到底是在找不到异常处理的情况下执行的还是无论找到与否都会执行啊。
至于楼主的问题嘛,肯定不会执行finally的,都退出程序块了啊。
finally到底是在找不到异常处理的情况下执行的还是无论找到与否都会执行啊。
至于楼主的问题嘛,肯定不会执行finally的,都退出程序块了啊。