일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- array
- java
- Math
- bit manipulation
- dynamic programming
- greedy
- sorting
- Binary Tree
- string
- Method
- Counting
- hash table
- geometry
- 코테
- two pointers
- simulation
- Binary Search
- implement
- Data Structure
- database
- SQL
- 코딩테스트
- 구현
- Matrix
- 파이썬
- 자바
- Number Theory
- Stack
- Tree
- Class
- Today
- Total
코린이의 소소한 공부노트
사용자 정의 예외 만들기, 예외 되던지기 본문
[사용자 정의 예외 만들기]
1. 조상은 Exception과 RuntimeException 중에서 선택한다.
- 필요한 경우에만 Exception 클래스를 상속받아 체크드 예외로 만들자.
- 예외를 선택 처리하는 RuntimeException을 상속받아 언체크드 예외로 만드는 것이 편하다.
2. 보통 예외 메시지가 다 있기 때문에 문자열을 매개변수로 받는 생성자가 필요하다.
// 예시1. 사용자 정의 예외의 기본 틀
class MyException extends Exception{ // 체크드 예외 -> try-catch 필수
MyException(String msg){ // 문자열을 매개변수로 받는 생성자
super(msg); // 조상인 Exception 클래스의 생성자 호출
}
}
// 예시2. 기본 틀에 에러 코드를 추가한 것
class MyException extends Exception{
private final int ERR_CODE;
MyException(String msg, int errCode){ // 생성자
super(msg);
ERR_CODE = errCode;
}
MyException(String msg){ // 생성자
this(msg, 100); // ERR_CODE를 100(기본값)으로 초기화
}
public int getErrCode(){
return ERR_CODE;
}
}
[예외 되던지기]
1. 예외를 처리한 후 다시 예외를 발생시키는 것으로,
2. 호출한 메서드와 호출된 메서드 양쪽 모두 예외를 처리하게 된다.
class Test {
public static void main(String[] args) {
try {
method();
} catch(Exception e) {
System.out.println("main메서드에서 예외 처리");
}
}
static void method() throws Exception {
try {
throw new Exception();
} catch(Exception e) {
System.out.println("method1메서드에서 예외 처리");
throw e; // 다시 예외를 발생시킨다.
}
}
}
// 결과
method1메서드에서 예외 처리
main메서드에서 예외 처리
위 코드를 읽었다면 코드가 실행되면서 어떻게 진행되는지 아래 그림처럼 자연스럽게 생각날 것이다.
[쿠키글] 알맞은 예외 처리 방식을 어떻게 선택하지?
예외의 종류, 처리 방식은 얼추 다 본 것 같은데, 어떤 상황에 어떤 처리 방식을 쓸지 감이 잡히지 않는다. 그럴 때 아래 예시가 생각보다 도움이 될 수도 있다.
엄마가 딸에게 천 원을 주면서 두부를 사 와달라 부탁을 했다. 딸이 그 돈을 받아 가게로 갔더니, 두부가 3천 원인 것이다..!
1. 직접 처리하기(try-catch)
- 딸이 자기 돈 2천 원을 보태 두부를 사서 집으로 간다.
2. 떠넘기기(예외 선언)
- 아무것도 사지 않고 집으로 와서 돈이 부족해서 사지 못했다고 하고 천 원을 엄마에게 돌려준다.
3. 분담 처리하기(예외 되던지기)
- 딸이 천 원을 내고 2천 원을 외상으로 달고 집으로 온다. 후에 엄마가 장 보러 가면서 외상으로 달아둔 2천 원을 갚는다.
'Java' 카테고리의 다른 글
Object 클래스와 메서드 (0) | 2022.06.16 |
---|---|
연결된 예외 (0) | 2022.06.10 |
예외 처리 (2) - 메서드에 예외 선언하기, finally 블록 (0) | 2022.05.26 |
예외의 분류 - 컴파일러 기준 (0) | 2022.05.25 |
예외 발생시키기 (0) | 2022.05.25 |