[개념 설명]
예외 처리는 프로그램 실행 중 발생하는 예기치 않은 상황을 처리하는 프로그래밍 방식입니다. 자바에서는 try-catch-finally 구문을 사용하여 예외를 처리합니다(JavaScript의 try-catch와 유사). 예외는 Throwable 클래스를 상속받는 객체로 처리되며, Exception과 Error로 크게 구분됩니다.
[비유를 통한 설명]
자동차 운전으로 비유하면:
- 일반 코드는 정상적인 도로 주행
- 예외는 갑작스러운 장애물이나 사고 상황
- try는 주의하면서 운전하는 구간
- catch는 문제 상황에 대한 대처 방법
- finally는 어떤 상황에서도 반드시 해야 하는 주차
[사용 목적]
- 프로그램 안정성 확보
- 비정상 종료 방지
- 오류 상황의 체계적 관리
- 디버깅 용이성 제공
- 코드 품질 향상
- 예외 상황 명확한 구분
- 유지보수성 증가
- 코드 가독성 향상
[자주하는 실수]
- 예외 무시
try {
// 코드
} catch (Exception e) {
// 아무것도 하지 않음 - 잘못된 방식
}
- 과도한 try-catch 사용
- 리소스 누수
- 지나치게 광범위한 예외 처리
[예외 종류 비교]
특성 | Checked Exception | Unchecked Exception |
---|---|---|
처리 의무 | 필수 | 선택 |
확인 시점 | 컴파일 시 | 런타임 시 |
대표 예외 | IOException | NullPointerException |
트랜잭션 처리 | 롤백 안됨 | 롤백 됨 |
[실무 활용 예시]
데이터베이스 작업
public User findUser(String id) {
try (Connection conn = dataSource.getConnection()) {
// DB 조회 로직
} catch (SQLException e) {
log.error("DB 조회 실패", e);
throw new BusinessException("사용자 조회 실패");
}
}
파일 처리
public String readFile(String path) {
try (BufferedReader reader = new BufferedReader(new FileReader(path))) {
return reader.lines().collect(Collectors.joining("\n"));
} catch (IOException e) {
throw new FileProcessingException("파일 읽기 실패");
}
}
REST API 예외 처리
@ExceptionHandler(BusinessException.class)
public ResponseEntity<ErrorResponse> handleBusinessException(BusinessException e) {
return ResponseEntity
.status(HttpStatus.BAD_REQUEST)
.body(new ErrorResponse(e.getMessage()));
}
커스텀 예외 처리
public class CustomException extends RuntimeException {
private final ErrorCode errorCode;
public CustomException(ErrorCode errorCode) {
super(errorCode.getMessage());
this.errorCode = errorCode;
}
}
'Java > 자바 학습' 카테고리의 다른 글
자바 제네릭 (1) | 2025.05.07 |
---|---|
자바 컬렉션 프레임워크 (0) | 2025.05.07 |
자바 접근 제어자 (0) | 2025.05.01 |
메서드 vs 함수 (0) | 2025.05.01 |
클래스의 final (0) | 2025.05.01 |