본문 바로가기

객체 지향 프로그래밍 - 예외 처리

예외와 예외 클래스, 예외 처리 코드

예외와 에러

  • 예외: 잘못된 사용 또는 코딩으로 인한 오류
  • 에러와 달리 예외 처리를 통해 계속 실행 상태를 유지할 수 있음
  • 일반 예외(Exception): 컴파일러가 예외 처리 코드 여부를 검사하는 예외
  • 실행 예외(Runtime Exception): 컴파일러가 예외 처리 코드 여부를 검사하지 않는 예외


    출처, 이것이 자바다


예외 처리

  • 예외 발생 시 프로그램의 갑작스러운 종료를 막고 정상 실행을 유지할 수 있게 처리하는 코드
  • 예외 처리 코드는 try-catch-finally 블록으로 구성
  • try-catch-finally 블록은 생성자 내부와 메소드 내부에서 작성


    출처, 이것이 자바다


package ch11.sec02.exam01;

public class ExceptionHandlingExample1 {

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



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


실행 결과


package ch11.sec02.exam01;

public class ExceptionHandlingExample2 {

    public static void printLength(String data) {

        try { //예외발생 가능한 곳
        int result = data.length(); //java.lang.NullPointerException 예외발생
        System.out.println("문자 수 : " + result);
        }catch(NullPointerException e) { // try 구문에서 예외 발생시 동작형. 이때 예외 클래스는 예외 발생한 오류 데이터에 해당하는 예외 클래스이어야 한다.
            System.out.println(e.getMessage());
        }finally { //예외 발생과 상관없이 마지막으로 실행하는 문법
            System.out.println("[마무리 실행]\n");
        }
    }



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


실행 결과


package ch11.sec02.exam02;

public class ExceptionHandlingExample {

    public static void main(String[] args) {

        // 1)예외전가 2)예외처리(try-catch구문)
        try {
            Class.forName("java.lang.String"); //예외 없음
            System.out.println("java.lang.String 클래스가 존재합니다.");
        } catch (ClassNotFoundException e) { //진행안됨.
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        System.out.println();

        try {
            Class.forName("java.lang.String2"); //예외 발생
            System.out.println("java.lang.String2 클래스가 존재합니다.");
        } catch (ClassNotFoundException e) { //진행됨.
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

}


실행 결과


'객체 지향 프로그래밍 - 예외 처리' 카테고리의 다른 글

사용자 정의 예외  (0) 2023.01.26
예외 떠넘기기  (0) 2023.01.26
예외 종류에 따른 처리  (0) 2023.01.26