Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java에서 catch 블록 없이 try 블록만 사용할 수 있을까요?

네, 가능합니다. finally 블록을 활용하면 catch 블록 없이 try 블록만으로 예외 처리 구조를 작성할 수 있습니다.

자바에서 finally 블록은 try 블록 내에서 예외가 발생하더라도 반드시 실행됩니다. 유일한 예외는 System.exit()가 호출되는 경우로, 이때는 JVM이 종료되기 때문에 finally 블록이 실행되지 않습니다.

예제 1: 기본적인 try-finally 구조

public class TryBlockWithoutCatch {
    public static void main(String[] args) {
        try {
            System.out.println("Try Block");
        } finally {
            System.out.println("Finally Block");
        }
    }
}

실행 결과

Try Block
Finally Block

위 예제에서 볼 수 있듯이, try 블록이 실행된 후 finally 블록이 정상적으로 실행됩니다.

return 문이 있어도 finally 블록은 실행됩니다

흥미로운 점은 메서드에 반환 타입이 존재하고 try 블록에서 이미 값을 반환(return)했더라도, finally 블록은 여전히 실행된다는 것입니다.

예제 2: return 문이 있는 try-finally

public class TryWithFinally {
    public static int method() {
        try {
            System.out.println("Try Block with return type");
            return 10;
        } finally {
            System.out.println("Finally Block always execute");
        }
    }
    public static void main(String[] args) {
        System.out.println(method());
    }
}

실행 결과

Try Block with return type
Finally Block always execute
10

정리

  • catch 블록 없이 try-finally 조합만으로 코드를 작성할 수 있습니다.
  • finally 블록은 예외 발생 여부와 관계없이 항상 실행됩니다.
  • try 블록에서 return 문을 만나도 finally 블록은 메서드 종료 전에 실행됩니다.
  • 단, System.exit() 호출 시에는 finally 블록이 실행되지 않습니다.

이러한 특성 덕분에 finally 블록은 파일 스트림 닫기, 데이터베이스 연결 해제 등 리소스 정리 작업에 널리 활용됩니다.