Monday

7. Java 예외 처리와 어노테이션 본문

언어/Java

7. Java 예외 처리와 어노테이션

뉴비2 2024. 11. 10. 19:32

예외 처리 (Exception Handling)

예외 처리의 기본 개념

Java의 예외 처리는 프로그램 실행 중 발생할 수 있는 오류 상황을 우아하게 관리하는 메커니즘입니다. 주요 목적은 프로그램의 비정상적인 종료를 방지하고 오류를 체계적으로 처리하는 것입니다.

예외의 종류

Java에서 예외는 크게 두 가지로 분류됩니다:

  • Checked 예외: 컴파일 시점에 반드시 처리해야 하는 예외
  • Unchecked 예외: 런타임 시 발생하는 예외 (RuntimeException의 하위 클래스)

예외 처리 기본 구문

try {
    // 예외가 발생할 수 있는 코드
} catch (SpecificException e) {
    // 특정 예외 처리 로직
} finally {
    // 항상 실행되는 코드
}

사용자 정의 예외 생성

public class CustomException extends Exception {
    private String errorCode;

    public CustomException(String message, String errorCode) {
        super(message);
        this.errorCode = errorCode;
    }

    public String getErrorCode() {
        return this.errorCode;
    }
}

예외 던지기와 처리 예제

public void openFile(String path) throws IOException {
    File file = new File(path);
    if (!file.exists()) {
        throw new IOException("파일이 존재하지 않습니다: " + path);
    }
    // 파일 처리 로직
}

어노테이션 (Annotations)

어노테이션의 기본 개념

어노테이션은 메타데이터를 제공하는 Java의 특별한 주석 형태입니다. 컴파일러, 프레임워크, 또는 런타임 시 특정 동작을 지시할 수 있습니다.

주요 내장 어노테이션

  • @Override: 메서드 재정의 검증
  • @Deprecated: 더 이상 사용되지 않는 메서드 표시
  • @SuppressWarnings: 특정 경고 무시

사용자 정의 어노테이션 예제

@Documented
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface MethodInfo {
    String author() default "Unknown";
    String date();
    int revision() default 1;
    String comments();
}

어노테이션 사용 예시

public class ExampleClass {
    @MethodInfo(
        author = "홍길동", 
        date = "2024-11-10", 
        comments = "중요한 메서드"
    )
    public void importantMethod() {
        // 메서드 로직
    }
}

오픈소스 활용 예제

스프링 프레임워크에서의 예외 처리

@ControllerAdvice
public class GlobalExceptionHandler {
    @ExceptionHandler(ResourceNotFoundException.class)
    public ResponseEntity<ErrorResponse> handleResourceNotFound(ResourceNotFoundException ex) {
        ErrorResponse error = new ErrorResponse(
            HttpStatus.NOT_FOUND.value(), 
            ex.getMessage()
        );
        return new ResponseEntity<>(error, HttpStatus.NOT_FOUND);
    }
}

Apache Commons에서의 어노테이션 활용

public class ConfigurationManager {
    @Configuration
    public DataSource createDataSource() {
        // 데이터베이스 연결 설정
    }
}

주의사항:

  • 예외는 신중하게 처리해야 합니다.
  • 과도한 예외 처리는 코드를 복잡하게 만들 수 있습니다.
  • 어노테이션은 코드의 가독성과 유지보수성을 높여줍니다.
Comments