본문 바로가기

JAVA/DAY 19 _ 23.09.12

Checked exception

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