[java] 예외 처리

예외 처리는 프로그램 실행 중 발생할 수 있는 오류를 처리하는 방법입니다. 자바에서는 예외 상황을 처리하기 위해 try-catch 문을 사용합니다. 이를 통해 프로그램이 비정상적인 상황에서도 계속 실행될 수 있도록 할 수 있습니다.

try-catch

try-catch 문은 예외가 발생할 수 있는 코드의 블록을 감싸고, 해당 예외가 발생한 경우 처리하는 코드를 제공합니다. 기본적인 구문은 다음과 같습니다.

try {
    // 예외가 발생할 수 있는 코드
} catch (Exception e) {
    // 예외가 발생했을 때 실행할 코드
}

try 블록 내에서 예외가 발생하면, 해당 예외 타입에 맞는 catch 블록으로 제어가 이동합니다. 이후 catch 블록 내의 코드가 실행되며, 예외에 대한 처리가 진행됩니다. catch 블록의 매개변수인 Exception e는 발생한 예외 객체를 참조하게 됩니다.

다중 catch 블록

하나의 try 문에 여러 종류의 예외를 처리해야 할 경우, 다중 catch 블록을 사용할 수 있습니다. 각 catch 블록은 서로 다른 예외 타입에 대한 처리 코드를 제공합니다. 예를 들어,

try {
    // 예외가 발생할 수 있는 코드
} catch (ExceptionType1 e) {
    // 예외 타입 1에 대한 처리 코드
} catch (ExceptionType2 e) {
    // 예외 타입 2에 대한 처리 코드
} catch (ExceptionType3 e) {
    // 예외 타입 3에 대한 처리 코드
}

위와 같이 각각 다른 예외 타입에 대한 처리 코드를 제공할 수 있습니다.

finally 블록

finally 블록은 try-catch 문에서 예외 발생 유무와 상관없이 항상 실행되는 코드 블록입니다. finally 블록을 사용하여 예외 발생 시에도 리소스를 정리하거나 필요한 경우 추가적인 로직을 수행할 수 있습니다.

try {
    // 예외가 발생할 수 있는 코드
} catch (Exception e) {
    // 예외에 대한 처리 코드
} finally {
    // 항상 실행되는 코드
}

try-catch 문에 finally 블록을 추가하여 해당 예외가 처리된 후에도 정리 작업을 할 수 있습니다.

사용자 정의 예외

자바에서는 개발자가 필요에 따라 직접 예외를 정의하여 사용할 수도 있습니다. 이는 Exception 클래스를 상속받아 새로운 예외 클래스를 작성하는 방식으로 이뤄집니다. 예를 들어,

public class CustomException extends Exception {
    // 필요한 생성자, 메서드 등을 작성
}

위와 같이 Exception 클래스를 상속받은 CustomException 클래스를 작성할 수 있습니다. 그리고 예외가 발생할 때는 throw 키워드를 사용하여 해당 예외를 던질 수 있습니다.

if (someCondition) {
    throw new CustomException();
}

이렇게 사용자 정의 예외를 통해 특정 상황에 대한 예외 처리를 구현할 수 있습니다.


참고 자료