JavaScript

웹 개발의 필수 언어

동적인 웹 페이지 구현을 위한 핵심 프로그래밍 언어.

Java

객체지향 프로그래밍

안정적이고 확장성 있는 백엔드 개발의 대표 언어.

HTML

웹의 기초

웹 페이지의 구조를 정의하는 마크업 언어.

React

현대적 UI 라이브러리

효율적인 사용자 인터페이스 구축을 위한 JavaScript 라이브러리.

CSS

웹 디자인의 핵심

웹 페이지의 시각적 표현을 담당하는 스타일 언어.

Spring

자바 웹 프레임워크

기업급 애플리케이션 개발을 위한 강력한 프레임워크.

Java/자바 학습

자바의 예외 처리

lamarcK 2025. 5. 7. 13:26

[개념 설명]

예외 처리는 프로그램 실행 중 발생하는 예기치 않은 상황을 처리하는 프로그래밍 방식입니다. 자바에서는 try-catch-finally 구문을 사용하여 예외를 처리합니다(JavaScript의 try-catch와 유사). 예외는 Throwable 클래스를 상속받는 객체로 처리되며, Exception과 Error로 크게 구분됩니다.

[비유를 통한 설명]

자동차 운전으로 비유하면:

  • 일반 코드는 정상적인 도로 주행
  • 예외는 갑작스러운 장애물이나 사고 상황
  • try는 주의하면서 운전하는 구간
  • catch는 문제 상황에 대한 대처 방법
  • finally는 어떤 상황에서도 반드시 해야 하는 주차

[사용 목적]

  1. 프로그램 안정성 확보
    • 비정상 종료 방지
    • 오류 상황의 체계적 관리
    • 디버깅 용이성 제공
  2. 코드 품질 향상
    • 예외 상황 명확한 구분
    • 유지보수성 증가
    • 코드 가독성 향상

[자주하는 실수]

  1. 예외 무시
try {
    // 코드
} catch (Exception e) {
    // 아무것도 하지 않음 - 잘못된 방식
}
  1. 과도한 try-catch 사용
  2. 리소스 누수
  3. 지나치게 광범위한 예외 처리

[예외 종류 비교]

특성 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