표준 예외란?
•
특징
◦
자바에서 제공하는 예외 클래스다.
◦
자바 개발자라면 익숙한 표준으로 예외를 접했을 때, 어떤 예외인지 이해하기 쉽다.
◦
예외를 생성할 때, 생성자에 메시지를 전달한 후, getMessage() 메서드로 접근 가능하다.
•
단점
◦
구체적인 예외가 필요할 상황에 부적합할 수 있다.
◦
catch 문에서 특정한 상황만을 걸러내기가 어렵다.
◦
예외 클래스의 생성자로 String 타입만 넘겨줄 수 있다.
▪
예외 발생 경위를 파악하기 위해 구체적인 정보를 파악하기 힘들 수 있다.
커스텀 예외란?
•
특징
◦
표준 예외를 상속해 직접 만든 예외 클래스다.
◦
클래스의 이름만으로도 충분한 의미를 제공할 수 있다.
◦
커스텀 예외 클래스 내부에서 추가적인 처리가 가능하다.
▪
예외 메시지를 포매팅한다거나 인자로 받은 값을 활용할 수 있다.
◦
예외 범위를 좁히기 용이하다. 특정한 예외만 거를 수 있다.
◦
생성자로 다양한 매개변수를 제공할 수 있다.
◦
예외 생성 비용을 줄일 수 있다.
▪
표준 예외 발생 시, JVM은 Stack Trace를 제공하기 위해 Call Stack에 있는 메서드 리스트를 저장하는데, 이는 많은 비용을 사용한다.
▪
catch 문으로 예외를 잡아 정상 흐름으로 처리한다면 이 비용을 아낄 수 있다.
•
단점
◦
관리할 클래스가 많아진다.
◦
작명 센스가 좋지 않다면 불필요하게 코드 단위까지 확인해야할 수도 있다.