[Java] 표준 예외를 사용하자

2024. 12. 5. 07:14·Language/Java
반응형

Effective Java의 72번째 항목으로 Exception, RuntimeException, Throwable, Error를 직접 재사용하지 말자는 내용이다. 이 예외들은 다른 예외들을 포괄하는 클래스이므로 안정적으로 테스트할 수 없다. 예외 처리 코드가 실제로 잡아야 할 구체적인 예외가 아닌 다른 예외도 함께 잡을 수 있기 때문이다.

class Calculator {
    public static int add(final String text) {
        if (!StringUtils.hasText(text)) {
            throw new RuntimeException("Input text cannot be null or empty");
        }

        // do something...
    }
}

구체적인 예외 클래스를 사용함으로써 코드의 가독성과 유지보수성이 높일 수 있다. 위 Calculator 클래스에서 RuntimeException 대신 IllegalArgumentException을 사용했다. 이렇게 하면 예외 발생 시 "메서드에 전달된 인자가 유효하지 않다"는 구체적인 의미를 알 수 있게된다. 해당 메서드를 사용하는 개발자는 어떤 상황에서 예외가 발생하는지 명확하게 이해할 수 있다. 또 예외 처리 코드에서도 특정 예외만 정확하게 캐치할 수 있어 더 견고한 애플리케이션을 구축할 수 있다.

Exception 클래스의 API 문서를 참고해 그 예외가 어떤 상황에서 던져지는지 꼭 확인해야한다. RuntimeException 문서를 보면 다른 표준 예외들을 확인할 수 있다. 예외가 필요한 상황에서는 이름 뿐만 아니라 예외가 던져지는 맥락도 고려해서 사용하도록 한다.

반응형
저작자표시 비영리 변경금지 (새창열림)
'Language/Java' 카테고리의 다른 글
  • [Java] Know your java
  • [Java] 동등성, 동일성
  • [Java] Enum 비교를 equals() 로 하지않고 == 로 해야 하는 이유
  • [Java] Exception
덴마크초코우유
덴마크초코우유
IT, 알고리즘, 프로그래밍 언어, 자료구조 등 정리
    반응형
  • 덴마크초코우유
    이것저것끄적
    덴마크초코우유
  • 전체
    오늘
    어제
    • 분류 전체보기 (123)
      • Spring Framework (10)
        • Spring (5)
        • JPA (3)
        • Spring Security (0)
      • Language (51)
        • Java (11)
        • Python (10)
        • JavaScript (5)
        • NUXT (2)
        • C C++ (15)
        • PHP (8)
      • DB (16)
        • MySQL (10)
        • Reids (3)
        • Memcached (2)
      • 개발 (3)
      • 프로젝트 (2)
      • Book (2)
      • PS (15)
        • 기타 (2)
        • 백준 (2)
        • 프로그래머스 (10)
      • 딥러닝 (8)
        • CUDA (0)
        • Pytorch (0)
        • 모델 (0)
        • 컴퓨터 비전 (4)
        • OpenCV (1)
      • 기타 (16)
        • 디자인패턴 (2)
        • UnrealEngine (8)
        • ubuntu (1)
        • node.js (1)
        • 블로그 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    php
    웹
    Unreal Engine
    언리얼엔진4
    알고리즘
    게임
    PS
    Unreal
    MySQL
    pytorch
    클래스
    JavaScript
    게임 개발
    JS
    mscoco
    딥러닝
    프로그래머스
    map
    memcached
    FPS
    자바
    select
    C
    redis
    CPP
    Python
    NUXT
    C++
    블루프린트
    파이썬
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
덴마크초코우유
[Java] 표준 예외를 사용하자
상단으로

티스토리툴바