티스토리 뷰
(오늘도 어김없이 백엔드 공부 중....)
이번 포스팅에서는 자바의 커스텀 예외에 대해서 글을 써보겠다.
백엔드를 만들때, 자바 내부에 있는 예외를 그대로 사용한다면 정확히 어떤 부분에서 에러가 예외가 발생하였고, 또 그 예외가 진행 중인 프로젝트의 어떤 부분에서 걸림돌이 되는지 파악하기 쉽지 않다.
그래서 되도록이면 커스텀 예외를 만들어서 사용하는 것이 좋다고 한다.
( 정확히 언제 사용하면 좋고, 언제는 그냥 자바 내부 예외를 사용하면 되는지는 아직 잘 모르겠다.. )
일단 커스텀 예외 생성시 알아야할 규칙부터 알아보자.
1. 일반 예외로 선언 경우 → Exception 상속 (extends)
2. 실행 예외로 선언 경우 → RuntimeException 상속
3. 커스텀 예외명은 Exception으로 끝나는 것을 권장함.
4. 커스텀 예외 작성 시, 생성자는 두 개를 선언하는 것이 일반적임.
- 매개 변수가 없는 기본 생성자
- 예외 발생 원인(예외 메시지)을 전달하기 위해 String 타입의 매개변수를 갖는 생성자
아래는 RuntimeException을 상속하는 기본 예제이다.
public class CustomException extends RuntimeException {
// 1. 매개 변수가 없는 기본 생성자
CustomException() {
}
// 2. String 타입의 매개변수를 갖는 생성자
CustomException(String message) {
super(message); // RuntimeException 클래스의 생성자를 호출함.
}
}
이렇게 얻은 예외는 보통 try-catch문에서 사용되게 된다.
또 이 예외 정보를 출력하기 위해 가장 많이 사용되는 메서드도 정리해보려고 한다.
1. getMessage()
- 만약 String 타입의 매개변수를 갖는 생성자를 사용하였다면( super에 해당 String을 넣었다면 ), 해당 String은 예외 객체 내부에 저장되게 되고, getMessage()를 통해서 이 String(=메시지)를 출력할 수 있음.
- 즉, 예외 메시지의 내용에는 왜 예외가 발생했는지에 대한 간단한 설명을 출력할 수 있는 것임.
2. printStackTrace()
- 예외 발생 코드를 추적해서 모두 콘솔에 출력합니다.
- 어떤 예외가 어디에서 발생했는지 상세하게 출력해주기 때문에 프로그램을 테스트하면서 오류를 찾을 때 활용함.
- 간단하게 말하자면, getMessage() + 어떤 Exception이 발생했는지와 에러가 발생한 위치를 보여줌.
3. toString()
→ getMessage() + 어떤 Exception이 발생했는지 보여줌.
참고 ↓ )
[예외처리] getMessage() , toString(), printStackTrace()
[예외처리] getMessage() , toString(), printStackTrace()
public class Test { public static void main(String[] args) { try { List list = new ArrayList(); System.out.println(list.get(0)); } catch (Exception e) { System.out.println("#getMessage"); System.out.println(e.getMessage()); System.out.println(); System.out
bohyeon2.tistory.com
[Java] 자바 커스텀 예외 만들기(Custom Exception)
1. 커스텀 예외(Custom Exception) 일반 예외로 선언할 경우 Exception을 상속받아 구현 실행 예외로 선언할 경우에는 RuntimeException을 상속받아 구현 사용자 정의 예외 클래스는 컴파일러가 체크하는 일
veneas.tistory.com
------------------------------------------------------------------------------------------
스프링 부트 예외처리 애너테이션를 공부하고 있는데,
너무 빡세다....
다음 포스팅에 야무지게(?) 정리해볼 예정이다.....
'Java' 카테고리의 다른 글
| 자바 - 제네릭 와일드 카드 기본 (0) | 2025.11.04 |
|---|---|
| 자바 - 오버라이딩 개념 및 예제 (0) | 2025.11.02 |
| 자바 - enum 정리 ( enum 개념 및 예제, enum 매핑 활용 예제 ) (0) | 2025.10.30 |
| 자바 - throws 키워드 개념 및 예제 (0) | 2025.10.28 |
| 자바 - super, super() 정리, 활용 예제 (0) | 2025.10.27 |