1. checked exception ---> Exception 하위티어
// 컴파일러가 예외 처리를 강제하는 예외
// 코드에서 명시적으로 예외 처리를 해야 하며, 그렇지 않으면 컴파일 오류가 발생함
// Exception 클래스와 그 하위 클래스 중에서 RuntimeException을 상속하지 않는 예외 클래스들
# Checked 예외를 처리하는 방법:
// 1) try-catch 블록 사용:
// Checked 예외를 발생시킬 수 있는 코드를 try 블록 내에 넣고, 해당 예외를 처리하는 코드를 catch 블록에 작성
// 2) throws 예외 던지기:
// Checked 예외를 처리하지 않고 현재 메서드에서 던지기 위해 메서드 선언에 throws를 사용
// 이 경우, 메서드를 호출한 상위 메서드에서 예외를 처리해야 함
# throw : 예외를 명시적으로 발생시키는 키워드
// 주로 예외 상황을 감지하고 그에 따른 예외를 생성하여 예외 처리 메커니즘에게 예외를 전달하는 데 사용함
// 이렇게 발생시킨 예외는 try-catch 블록에서 처리하거나, 호출한 메서드로 예외를 전파할 수 있음
// 방법2) throw 를 쓰면
- int result = a1.plus(4, 3); // --> 이것도 error가뜨는데
class AAA{
public int plus(int a, int b) throws Exception { // 방법2. throw를 쓰면
if(a % 2 == 0) {
throw new Exception("짝수면 안됩니다");
}
return a+b;
}
// 출력 :
// Exception in thread "main" java.lang.Exception: 짝수면 안됩니다
AAA a1 = new AAA();
// 방법2-2)
int result = a1.plus(4, 3); // --> 이것도 error가뜨는데
System.out.println(result);
System.out.println("a가 짝수니까 이거 출력되겠지 " + e.getMessage());
// ** getMessage() : 내가 던진 예외처리를 글로 써준당
System.out.println("프로그램 종료");
// --> 이렇게 카드 돌려막기하듯이 다 throw하면 컴퓨터도 걍 뻗어ㅋㅋㅋㅋ 프로그램종료가 안뜬당
방법2_해결1) 자바가 알아서 처리하게 나도 main에 던지든가
public static void main(String[] args) throws Exception {
// 방법2-2) 2. 자바가 알아서 처리하게 나도 main에 던지든가
방법2_해결2) try-catch쓰든가
try {
int result = a1.plus(4, 3);
System.out.println(result);
}catch(Exception e) {
System.out.println("a가 짝수니까 이거 출력되겠지 " + e.getMessage());
}
// 결론:
// 방법1 - try catch를 썼을 때 내 코드가 가독성이 너무 떨어진다 싶으면 그냥 main에 던져버려
'JAVA > DAY 19 _ 23.09.12' 카테고리의 다른 글
Unchecked Exception (0) | 2023.09.12 |
---|---|
Custom Exception (0) | 2023.09.12 |
Try Catch (0) | 2023.09.12 |
Exception Basic (0) | 2023.09.12 |
Set summary (0) | 2023.09.12 |