반응형
사용자정의 예외클래스를 사용해야 하는 이유
2024.09.27 - [📜 CleanCode] - [CleanCode]오류처리-예외사용법
Make a Exception class
- 확장extends로 Exception 혹은 RuntimeException을 사용해야 한다.
- Exception을 조상으로 가질 때에는 checked exception이기 때문에 try/catch문이 필수이다.
- 그래서 선택처리가 가능한 RuntimeException을 사용을 권장한다.
checked exception이란? 2024.11.03 - [☕ 자바 JAVA/☕ 개념지식] - [JAVA]Error & Exception. 예외의 종류.
- 에러메시지를 매개변수로 받는 생성자를 필수로 생성해야 한다.
사용자 정의 클래스 사용법
연결된 예외
: 예외가 다른 예외(주로 사용자정의예외)를 발생시킨 상태를 말한다.
- 코드 설명
- method를 실행할 때 여러 예외가 발생할 때
- 예외가 발생하면 사용자정의 예외를 발생시켜 그곳으로 throw넘긴다.
- 넘길 때, 실제로 발생한 예외를 iniCause()함수를 이용해 원인 예외로 지정한다.
- 위의 코드들을 한군데로 모은 곳이 오른쪽의 method이다.
- method를 실행하는 doMethod함수 모두에 throws 사용자정의 예외만 적어주면 된다.
- initCause(Throwable cause)
: 지정한 예외를 원인 예외로 등록.(실제로 발생한 예외) - getCause()
: 원인 예외를 반환. - 장점
- 이렇게 하면 main에는 throws가 붙지 않아도 된다.
→ 사용자정의 예외 클래스에서 모든 예외를 처리할 수 있습니다. - 세부적인 예외처리를 감출 수 있다.
- 이렇게 하면 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문을 통해 예외를 분담처리하고 있다.
반응형
'☕ 자바 JAVA > ☕ 클래스와 함수 Class & Method' 카테고리의 다른 글
[JAVA]String 생성자와 메서드들 (0) | 2024.11.08 |
---|---|
[JAVA]hashCode() (2) | 2024.11.05 |
[JAVA]오류출력:printStackTrace() & getMessage(), 멀티 catch블럭 (0) | 2024.11.01 |
[JAVA]익명 클래스 anonymous class (0) | 2024.11.01 |
[JAVA]내부 클래스 inner class (0) | 2024.10.31 |