티스토리 뷰

Language/Java

Exception 클래스

Seogineer 2022. 10. 18. 19:46

Exception 종류

RuntimeException이 checked exception과 unchecked exception을 나누는 기준으로서 RuntimeException과 서브 Exception은 모두 unchecked exception에 속하고 나머지는 모두 checked exception에 속한다.

  • checked exception
    • 반드시 try-catch 문으로 처리해야 하는 예외
    • 예) IOException, FileNotFoundException
  • unchecked exception
    • 반드시 처리해야 할 필요가 없는 예외
    • 예) RuntimeException, NullPointerException, ArithmeticException

 

Exception 클래스의 메소드

  • getMessage()
    • exception 객체가 가지고 있는 에러 메세지를 반환
class Example {
    public static void main(String[] args){
    	int num1 = 2, num2 = 3;
        try {
            int result = num1 - num2;
            if (result < 0)
            	throw new Exception("잘못된 결과입니다.");
    	    System.out.println(result);
        } catch (Exception e) {
            System.err.println(e.getMessage());
        }
    }
}

 

  •  printStackTrace()
    • getMessage 메소드 보다 상세한 exception 정보를 알고 싶을 때 사용
    • 개발 단계에 디버깅 목적으로만 사용해야 한다.
class Example {
    public static void main(String[] args){
        try {
            int arr[] = new int[0];
            System.out.println("합계" + getTotal(arr));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    static int getTotal(int[] arr) throws Exception {
        if (arr.length == 0)
            throw new Exception("비어있는 배열입니다.");
        int total = 0;
        for(int num : arr)
            total += num;
        return total;
    }
}

 

Exception 클래스의 선언 방법

class CustomException extends RuntimeException {
    CustomeException() {
        supur("잘못된 입력입니다.");
    }
}
class Example {
    public static void main(String[] args){
    	int num1 = 2, num2 = 3;
        try {
            int result = subtract(num1, num2);
    	    System.out.println(result);
        } catch (CustomException e) {
            System.err.println(e.getMessage());
        }
    }
    
    static int subtract(int a, int b) throws CustomException {
        if(a < b){
            throw new CustomException();
        }
        return a - b;
    }
}

 

참고

<뇌를 자극하는 Java 프로그래밍>, 한빛미디어

댓글
Total
Today
Yesterday
링크
Apple 2023 맥북 프로 14 M3, 스페이스 그레이, M3 8코어, 10코어 GPU, 512GB, 8GB, 한글