Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

finally 블록은 항상 Java에서 실행됩니까?

<시간/>

네, finally 블록은 JVM 크래시나 System.exit() 호출로 인해 비정상적인 프로그램 종료가 발생하지 않는 한 항상 실행됩니다.

  • finally 블록은 예외가 발생했는지 여부에 관계없이 항상 실행됩니다.
  • 파일 또는 DB 연결 종료와 같은 예외가 발생하면 finally 블록을 사용하여 코드를 정리합니다.
  • 최종 블록이 항상 실행된다고 말할 수는 없습니다. System.exit()와 같은 명령문이나 유사한 코드가 try 블록에 작성되면 프로그램이 자동으로 종료되고 이 경우 finally 블록이 실행되지 않기 때문입니다.
  • Try 블록의 정전 및 교착 상태로 인해 시스템이 종료될 때 작업 관리자 또는 콘솔에서 Java 프로세스가 강제 종료될 때 JVM이 메모리 부족으로 인해 finally 블록이 실행되지 않습니다.

예시 1

public class FinallyBlock {
   public static void main(String args[]){
      try {
         int a=10,b=30;
         int c = b/a;
         System.out.println(c);
      } catch(ArithmeticException ae){
         System.out.println(ae);
      } finally {
         System.out.println("finally block is always executed");
      }
   }
}

위의 예에서 finally 블록은 예외가 발생했는지 여부에 관계없이 항상 실행됩니다.

출력

3
finally block is always executed

예시 2

public class FinallyBlock {
   public static void main(String args[]) {
      try {
         System.out.println("I am in try block");
         System.exit(1);
      } catch(Exception ex){
         ex.printStackTrace();
      } finally {
         System.out.println("I am in finally block");
      }
   }
}

위의 예에서 finally 블록은 try 블록의 System.exit(1) 조건으로 인해 실행되지 않습니다.

출력

I am in try block