finally 반드시 실행합니다 (실례 코드)

다음과 같습니다.

class Exc{
 int a;
 int b;
}
 
 
public class Except {
 @SuppressWarnings("finally")
 static int compute (){
 Exc e = new Exc();
 e.a = 10;
 e.b = 10;
 int res = 0 ;
 try{
  res = e.a / e.b;
  System.out.println("try ……");
  return res + 1;
  
 }catch(NullPointerException e1){
  System.out.println("NullPointerException occured");
 }catch(ArithmeticException e1){
  System.out.println("ArithmeticException occured");
 }catch(Exception e3){
  System.out.println("Exception occured");
 }finally{
  System.out.println("finnaly occured");
 }
 System.out.println(res);
  
 return res+3;
 }
 
 public static void main(String[] args){
 int b = compute();
 System.out.println("mian b= "+b);
 }
}
출력:

try ……
finnaly occured
mian b= 2
결론: 이상이 없으면try의 코드 블록을try의return까지 실행하고, 이어finally의 코드 블록을finally가 실행된 후try로 돌아가서return을 실행합니다.함수를 종료합니다.

class Exc{
 int a;
 int b;
}
 
 
public class Except {
 @SuppressWarnings("finally")
 static int compute (){
 Exc e = new Exc();
// e.a = 10;
// e.b = 10;
 int res = 0 ;
 try{
  res = e.a / e.b;
  System.out.println("try ……");
  return res + 1;
  
 }catch(NullPointerException e1){
  System.out.println("NullPointerException occured");
 }catch(ArithmeticException e1){
  System.out.println("ArithmeticException occured");
 }catch(Exception e3){
  System.out.println("Exception occured");
 }finally{
  System.out.println("finnaly occured");
 }
 System.out.println(res);
  
 return res+3;
 }
 
 public static void main(String[] args){
 int b = compute();
 System.out.println("mian b= "+b);
 }
}
출력:

ArithmeticException occured
finnaly occured
0
mian b= 3
결론:try에 이상이 있으면, 이상 문장에서catch가 포획한 이상 코드 블록으로 이동하여catch를 실행한 후,finally를 실행하고,try{}catch{}finally{}를 뛰고, 계속 아래로 실행하고try의 뒤에 있는 문장을 실행하지 않습니다.
이상의 이finally는 반드시 실행할 것입니다(실례 코드)는 바로 여러분이 공유한 모든 내용입니다. 여러분께 참고가 되고 저희를 많이 사랑해 주시기 바랍니다.

좋은 웹페이지 즐겨찾기