Search
Duplicate
🏯

표준 예외 vs 커스텀 예외

표준 예외란?

특징
자바에서 제공하는 예외 클래스다.
자바 개발자라면 익숙한 표준으로 예외를 접했을 때, 어떤 예외인지 이해하기 쉽다.
예외를 생성할 때, 생성자에 메시지를 전달한 후, getMessage() 메서드로 접근 가능하다.
단점
구체적인 예외가 필요할 상황에 부적합할 수 있다.
catch 문에서 특정한 상황만을 걸러내기가 어렵다.
예외 클래스의 생성자로 String 타입만 넘겨줄 수 있다.
예외 발생 경위를 파악하기 위해 구체적인 정보를 파악하기 힘들 수 있다.

커스텀 예외란?

특징
표준 예외를 상속해 직접 만든 예외 클래스다.
클래스의 이름만으로도 충분한 의미를 제공할 수 있다.
커스텀 예외 클래스 내부에서 추가적인 처리가 가능하다.
예외 메시지를 포매팅한다거나 인자로 받은 값을 활용할 수 있다.
예외 범위를 좁히기 용이하다. 특정한 예외만 거를 수 있다.
생성자로 다양한 매개변수를 제공할 수 있다.
예외 생성 비용을 줄일 수 있다.
표준 예외 발생 시, JVM은 Stack Trace를 제공하기 위해 Call Stack에 있는 메서드 리스트를 저장하는데, 이는 많은 비용을 사용한다.
catch 문으로 예외를 잡아 정상 흐름으로 처리한다면 이 비용을 아낄 수 있다.
단점
관리할 클래스가 많아진다.
작명 센스가 좋지 않다면 불필요하게 코드 단위까지 확인해야할 수도 있다.