image.png

예외와 예외 클래스

image.png

예외 처리 코드

image.png

package exam19;

public class ExeptionHandlingExample {

    /** 
     * 문자열의 길이를 출력하는 메서드
     * - data가 null이면 NullPointerException 발생
     */

     public static void printLenth(String data){ 
         int result = data.length();
        System.out.println("문자 수 : "+ result);
     }
     public static void main(String[] args) {
        System.out.println("프로그램 시작\\n");

        printLenth("ThisIsJava");
        /** 
         * 문자열이 null일 경우
         * 매개변수로 null을 전달
         * NullPointerException 발생
         */

         printLenth(null);
         System.out.println("프로그램 종료");
     }
    

}

● 이번 예제에서 printLength()메소드는 문자열의 수를 리턴 ● 12 라인에서 문자열 대신 null을 입력 --> 5라인에서 NullPointerException 발생 ● NullPointerException은 실행 예외이므로 컴파일 시 예외 처리 코드가 없어도 되지만 실행 중에 발생하면 프로그램은 즉시 종료.

package exam19;

public class ExceptionHnadlingExample2 {
/** 
 * 문자열의 길이를 출력하는 메소드
 * - data가 null이면 NullPointerException 발생
 * - 예외 정보 얻는 3가지 방법 포함
 */

 public static void printLength(String data){
    try {
        int result = data.length();
        System.out.println("문자 수 : "+ result);

    } catch (NullPointerException e) {
        System.out.println("예외 메시지 : "+ e.getMessage());
        System.out.println("예외 원인 : "+ e.getCause());
        System.out.println("예외 클래스 : "+ e.getClass());
       System.out.println(e.toString());
         e.printStackTrace();
     } finally {
        System.out.println("마무리 실행\\n");
     }
}

    public static void main(String[] args){
        System.out.println("프로그램 시작\\n");

        printLength("ThisIsJava");
        printLength(null);
        System.out.println("프로그램 종료");

 }
}

예외 종류에 따른 처리

image.png

package exam19;

public class ExceptionHandlingExample3 {
    public static void main(String[] args) {
        String array[] = {"100", "1oo"};

        for (int i = 0; i <array.length; i++)
        {
            try {
                int value = Integer.parseInt(array[i]);
                System.out.println("array[" + i + "] " + value);
            } catch (ArrayIndexOutOfBoundsException e) {
                System.out.println("배열의 인덱스가 초과됨 " + e.getMessage());
            }
            catch(Exception e){
                System.out.println("실행에 문제가 있습니다.");
            }
        }
    }
}
### 결과 ###
array[0] 100
실행에 문제가 있습니다.