티스토리 뷰

Java

자바 - 커스텀 예외 만들기

Kodong's blog 2025. 11. 1. 10:03

(오늘도 어김없이 백엔드 공부 중....)

 

이번 포스팅에서는 자바의 커스텀 예외에 대해서 글을 써보겠다.

백엔드를 만들때, 자바 내부에 있는 예외를 그대로 사용한다면 정확히 어떤 부분에서 에러가 예외가 발생하였고, 또 그 예외가 진행 중인 프로젝트의 어떤 부분에서 걸림돌이 되는지 파악하기 쉽지 않다.

그래서 되도록이면 커스텀 예외를 만들어서 사용하는 것이 좋다고 한다.

( 정확히 언제 사용하면 좋고, 언제는 그냥 자바 내부 예외를 사용하면 되는지는 아직 잘 모르겠다.. )

 

일단 커스텀 예외 생성시 알아야할 규칙부터 알아보자.

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

 

 

------------------------------------------------------------------------------------------

스프링 부트 예외처리 애너테이션를 공부하고 있는데, 

너무 빡세다.... 

다음 포스팅에 야무지게(?) 정리해볼 예정이다.....

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2026/04   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
글 보관함