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


 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号