본문 바로가기
Java

JAVA Exception

by titlejjk 2023. 5. 10.

Java에서의 예외(Exception)란 사용자의 잘못된 조작이나 개발자의 코딩 실수로 인해 발생하는 프로그램 오류를 말한다.

일반 예외(Checked Exception)와 실행 예외(Unchecked Exception)가 있다. 일반예외는 개발자가 예외 처리를 반드시 해야 하고 실행 예외는 개발자가 예외 처리를 직접 하지 않아도 된다. 명시적인 예외 처리가 강제되는 것이 아니므로 unchecked 라고 부른다.

 

예외 처리를 할 때, try-catch 블록으로 예외 처리 하는 것이 기본이다. 하지만 경우에 따라서는 메소드를 호출 한 곳으로 예외 처리를 떠넘길 수도 있다. 이 때 사용하는 키워드가 throws이다. throws키워드는 메소드 선언부 맨 끝에 작성하며, 메소드에서 try-catch를 통해 처리하지 않은 예외를 호출한 곳으로 떠넘기는 역할을 한다.

throws 뒤에는 떠넘길 예외 클래스를 쉼표로 여러개 구분해서 나열할 수 있다. 발생할 수 있는 예외별로 throws 뒤에 나열하는 것이 보통이나, Exception 만 작성해서 모든 예외를 간단히 떠넘길 수도 있다.

 

실행 예외(Unchecked Exception)는 자바 컴파일러가 체크를 하지 않기 때문에 오로지 개발자의 경험에 의해서 예외 처리 코드를 삽입해야 한다.

 

자바에서는 개발자가 직업 예외를 정의해서 만들 수 있도록 하는 사용자 정의 예외가 존재한다. 사용자 정의 예외 클래스를 만들 때는 Exception 클래스를 상속받아 구현한다.

 

public class Example {
    public static void main(String[] args) {
        try {
            int[] arr = new int[5];
            System.out.println(arr[10]); // ArrayIndexOutOfBoundsException 발생
        } catch (ArrayIndexOutOfBoundsException e) {
            System.out.println("잘못된 배열 인덱스입니다.");
        }
        
        try {
            throw new MyException("사용자 정의 예외 발생");
        } catch (MyException e) {
            System.out.println(e.getMessage());
        }
    }
}

class MyException extends Exception {
    public MyException(String message) {
        super(message);
    }
}

위 코드에서 ArrayIndexOutOfBoundsException는 예외 처리를 해주지 않으면 컴파일 오류가 발생한다. 따라서 try-catch 블록으로 예외 처리를 해주어야 한다.

반면에 MyException 클래스는 개발자가 직접 정의한 사용자 정의 예외이다. MyException클래스는 Exception 클래스를 상속받아 구현했으며, 예외를 발생시키기 위해 throw new MyException("사용자 정의 예외 발생")코드를 작성했다. 예외를 발생시킨 후, catch 블록에서 예외를 처리한다.

'Java' 카테고리의 다른 글

JAVA Thread와 Runnable 의 차이  (0) 2023.05.11
JAVA Thread  (1) 2023.05.11
JAVA List Set Map  (0) 2023.05.08
JAVA Collection  (0) 2023.05.08
JAVA HashMap  (0) 2023.05.08

댓글