☕ 자바 JAVA/☕ 클래스와 함수 Class & Method

[JAVA]사용자정의 예외클래스 만들기, 연결된 예외

뉴이 NUEY 2024. 11. 4. 19:25
반응형

 

사용자정의 예외클래스를 사용해야 하는 이유

2024.09.27 - [📜 CleanCode] - [CleanCode]오류처리-예외사용법


Make a Exception class

기본 구조

  • 에러메시지를 매개변수로 받는 생성자를 필수로 생성해야 한다.

사용자 정의 클래스 사용법
연결된 예외
: 예외가 다른 예외(주로 사용자정의예외)를 발생시킨 상태를 말한다.

왼쪽 코드를 연결된 예외를 사용하여 오른쪽처럼 바꾸었다.
사용자정의 예외클래스.

  • 코드 설명
    • method를 실행할 때 여러 예외가 발생할 때
    • 예외가 발생하면 사용자정의 예외를 발생시켜 그곳으로 throw넘긴다.
    • 넘길 때, 실제로 발생한 예외를 iniCause()함수를 이용해 원인 예외로 지정한다.
    • 위의 코드들을 한군데로 모은 곳이 오른쪽의 method이다.
    • method를 실행하는 doMethod함수 모두에 throws 사용자정의 예외만 적어주면 된다.
  • initCause(Throwable cause)
    : 지정한 예외를 원인 예외로 등록.(실제로 발생한 예외)
  • getCause()
    : 원인 예외를 반환.
  • 장점
    • 이렇게 하면 main에는 throws가 붙지 않아도 된다.
      → 사용자정의 예외 클래스에서 모든 예외를 처리할 수 있습니다.
    • 세부적인 예외처리를 감출 수 있다.
Throwable 클래스란?
Error와 Exception의 조상으로, 상위 클래스가 Object밖에 없습니다.
오류를 확인할 때 사용하는 주요 함수들이 여기에 담겨있습니다.

만약 사용자정의 예외클래스가
extends Exception일 경우,
RuntimeException으로 사용하고싶다면?

  • 사용자 정의 클래스 class MyException extends Exception와 같이 만들었는데
  • 이미 이를 너무 많이 사용하고 있어 extends RuntimeException으로 바꿀 수 없는 상황이라면
  • throw new RuntimeException(사용자정의 예외());
※ 장점
Exception은 필수처리 예외이기에 throws와 try/catch가 필요하지만,
이렇게 RuntimeException으로 감싸줌으로써 선택처리 예외가 되므로 try/catch문 사용하여 더 간단하게 사용할 수 있다.

예외 되던지기
Exception Re-throwing

  • 예외를 처리try-catch한 후 다시 예외를 발생시켜, 양쪽 모두 예외를 처리하는 것.
  • 예외를 분담처리하는 것이 목적으로 자주 사용되는 방법은 아니다.
  • 코드설명
    • method의 try { } 블럭에서 예외가 발생 후, catch { } 블럭으로 처리하였다.
    • 하지만 throw e;로 다시 예외를 발생시킨다.
    • 처리되지 못한 예외는 method를 호출한 main으로 전달된다.
    • main에서 try-catch문으로 다시 예외를 처리한다.
    • main과 method 함수 모두 try/catch문을 통해 예외를 분담처리하고 있다.

참조 : https://www.youtube.com/watch?v=-iWKOnGW98Q&t=9s

반응형