Notice
Recent Posts
Recent Comments
«   2024/11   »
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
Archives
Today
Total
관리 메뉴

충분히 쌓여가는

checked 예외, unchecked 예외 본문

Java/JAVA2

checked 예외, unchecked 예외

빌드이너프 2023. 6. 22. 22:32

checked 예외

컴파일러가 예외처리 여부를 체크(예외 처리 필수)

 

예외처리가 필수인데 하지않아서 에러 발생(컴파일조차 안됨)

try-catch문이 없다

Exception이 checked 예외(Exception 클래스와 그 자손, 예외처리 필수)

class ExceptionTest {
    public static void main(String args[]) {
        throw new Exception(); // Exception을 고의로 발생시킨다
    }
}

java: unreported exception java.lang.Exception; must be caught or declared to be thrown

 

에러 없애기(try-catch문)

Exception과 그 자손은 반드시 예외처리 필수

class ExceptionTest {
    public static void main(String args[]) {
        try { // Exception과 그 자손은 반드시 예외처리 필수
            throw new Exception();

        } catch (Exception e) {

        }
    }
}

 

unchecked 예외

컴파일러가 예외 처리 여부를 체크 안함(예외 처리 선택)

 

RuntimeException(): 예외처리 선택

try-catch문이 없어도 컴파일 OK(예외처리가 선택이기 때문)

하지만 실행하면 RunTimeException 발생 => 비정상 종료

class ExceptionTest {
    public static void main(String args[]) {
        throw new RuntimeException(); // RuntimeException을 고의로 발생시킨다
    }
}

Exception in thread "main" java.lang.RuntimeException
	at ExceptionTest.main(ExceptionTest.java:3)

 

실행 시 에러 없애기(try-catch문)

RuntimeException과 그 자손은 예외처리를 해주지 않아도 컴파일이 되긴함

실행시 에러제거하고 싶은 경우 try-catch문 사용

class ExceptionTest {
    public static void main(String args[]) {
        try {
            throw new RuntimeException();
            
        } catch (Exception e) {

        }
    }
}

프로그램 오류, 예외 클래스의 계층구조

 

예를 들어 0으로 나누거나(ArithmeticException), 배열 범위를 벗어나는(IndexOutOfBoundsException)을 예외 처리가 선택이 아니라면 거의 모든 코드에 예외처리가 있어야한다,

하지만 아니기 때문에 코드를 작성할 때 주의해서 작성해야한다

'Java > JAVA2' 카테고리의 다른 글

연결된 예외(chained exception)  (0) 2023.06.25
사용자 정의 예외 만들기, 예외 되던지기  (0) 2023.06.24
예외 발생시키기  (0) 2023.06.22
멀티 catch 블럭  (0) 2023.06.22
printStackTrace(), getMessage()  (0) 2023.06.22