예외처리 전략

heeezni·2025년 6월 13일

예외처리 전략

예외를 "내부"에서 잡으면 안 되는 경우

  • 여러 클래스가 메서드 호출을 타고타고 들어가는 구조일 때 안쪽에서 try-catch로 막아버리면, 바깥에서는 예외를 알 수 없음
  • 제일 바깥쪽에서 처리하는 게 좋음 → throws로 밖으로 전달

커스텀 예외 만들기

특정 상황에서 발생한 오류를 명확하게 구분하고 싶을 때. 직접 예외 클래스를 정의하자!

  1. RuntimeException을 상속한 클래스 정의
  2. 생성자에서 super(매개변수) 호출
  3. 예외 발생 위치에서 일부러 커스텀 예외 발생시키기
    throw new 커스텀Exception(...)
    throw : 에러 강제 발생
  4. 예외 발생한 메서드에throws붙여서 그 메서드를 호출한 곳으로 예외 전달 (던져버리자!)

커스텀 예외 예시

public class ProductException extends RuntimeException {
	/*  자바에서는 부모 생성자를 자동으로 상속하지 않기 때문에,
	 * super(매개변수)를 호출하여 부모 클래스(RuntimeException)의 생성자를 명시적으로 호출해야 함.*/
     
    // 에러 메시지를 예외 객체에 담고 싶을 때 사용하는 생성자
	public ProductException(String msg) {
		super(msg);
	}

	/* Throwable은 모든 예외 클래스의 최상위 타입이기 때문에 어떤 예외든 받아 처리할 수 있음 */
    
    // 다른 예외 객체(e)를 그대로 감싸서 전달하고 싶을 때 사용하는 생성자.
	public ProductException(Throwable e) {
		super(e);
	}

	public ProductException(String msg, Throwable e) {
		super(msg, e);
	}
}
profile
아이들의 가능성을 믿었던 마음 그대로, 이제는 나의 가능성을 믿고 나아가는 중입니다.🌱

0개의 댓글