关于try...catch...finaly机制
下面有这么一个程序,代码如下:
输出结果:
先打印
C-time1=1132934662156
再打印
F-time2=1132934662156
最后打印
a=1132934662156
从输出结果我们可以知道整个流程:
执行完catch字句中return 所有前语句,再执行finally,最后返回。
附:这道题曾经在我被面试的时候被问过,后来我面试别人的时候同样也用过。
public class ExceptionDemo{
public static void createException()throws Exception{
throw new Exception("An Exception is create");
}
public static long get(){
try {
createException();
return System.currentTimeMillis();//(1)
}
catch (Exception ex) {
System.out.println("C-time1="+System.currentTimeMillis());
return System.currentTimeMillis();//(2)
}
finally {
System.out.println("F-time2="+System.currentTimeMillis());(3)
}
}
public static void main(String[] args){
long a=get();
System.out.println("a="+a);//(4)
}
}
public static void createException()throws Exception{
throw new Exception("An Exception is create");
}
public static long get(){
try {
createException();
return System.currentTimeMillis();//(1)
}
catch (Exception ex) {
System.out.println("C-time1="+System.currentTimeMillis());
return System.currentTimeMillis();//(2)
}
finally {
System.out.println("F-time2="+System.currentTimeMillis());(3)
}
}
public static void main(String[] args){
long a=get();
System.out.println("a="+a);//(4)
}
}
先打印
C-time1=1132934662156
再打印
F-time2=1132934662156
最后打印
a=1132934662156
从输出结果我们可以知道整个流程:
执行完catch字句中return 所有前语句,再执行finally,最后返回。
附:这道题曾经在我被面试的时候被问过,后来我面试别人的时候同样也用过。