Monday
7. Java 예외 처리와 어노테이션 본문
예외 처리 (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() {
// 데이터베이스 연결 설정
}
}
주의사항:
- 예외는 신중하게 처리해야 합니다.
- 과도한 예외 처리는 코드를 복잡하게 만들 수 있습니다.
- 어노테이션은 코드의 가독성과 유지보수성을 높여줍니다.
'언어 > Java' 카테고리의 다른 글
8. Java 14 레코드와 17의 패턴 패칭 (0) | 2024.11.10 |
---|---|
6. Java 고급 문법 (2) 람다식과 Streams (0) | 2024.11.10 |
5. Java 고급 문법 (1) Generics (0) | 2024.11.10 |
4. Java 객체지향 프로그래밍 (클래스, 상속, 다형성, 인터페이스) (1) | 2024.11.10 |
3. Java 참조 타입(스트링, 배열, enum) (0) | 2024.11.10 |
Comments