[내일배움캠프] Java 기초문법 Chapter 3. 예외와 예외처리

김재진·2025년 12월 10일

내일배움캠프

목록 보기
14/70

1. 예외(Exception)

  • 프로그램 실행 중 예상하지 못한 상황이 발생하는 것
  • 예외를 의도적으로 발생할 수 있음(throw 키워드 사용)
  • 예외처리 하지 않으면 프로그램이 중단되므로 try-catch를 통해 예외처리를 해야함

2. RuntimeException(UncheckedException)

  • 컴파일러가 예외 처리를 강제하지 않음
  • 컴파일 오류가 발생하지 않고 처리되지 않은 예외를 시작지점 까지 전파하여 처리 되지 않을 시 프로그램을 종료함
  • RuntimeException 을 상속받는 모든 예외를 UncheckedException 이라고 함
public class ExceptionPractice {
    public void callUncheckedException() {
        if (true) {
            System.out.println("언체크 예외 발생");
            throw new RuntimeException(); // ✅ 예외발생 
        }
    }
}

public class Main {
    public static void main(String[] args) {
        // 예외 실습 객체 인스턴스화
        ExceptionPractice exceptionPractice = new ExceptionPractice();

        // ✅ 언체크 예외 호출
        exceptionPractice.callUncheckedException();
        
        // ❌ 예외처리를 해주지 않았기 때문에 프로그램이 종료됩니다.
        System.out.println("이 줄은 실행되지 않습니다."); 
    }
}

public class Main {

    public static void main(String[] args) {
        ExceptionPractice exceptionPractice = new ExceptionPractice();
        
        // ✅ 상위로 전파된 예외처리
        try {
            exceptionPractice.callUncheckedException();

        } catch (RuntimeException e) { // ✅ 예외처리
            System.out.println("언체크 예외 처리");   
            
        } catch (Exception e) {
            System.out.println("체크 예외 처리");
        }

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

3. CheckedException

  • 컴파일러가 예외 처리를 강제하는 예외(컴파일 오류가 발생함)
  • 반드시 try-catch로 예외처리 하거나 throw 키워드를 사용해야 함
public class ExceptionPractice {

    public void callCheckedException() {
		    // ✅ try-catch 로 예외 처리
        try { 
            if (true) {
                System.out.println("체크예외 발생");
                throw new Exception();
            }
        } catch (Exception e) {
            System.out.println("예외 처리");
        }
    }
}

public class Main {
    public static void main(String[] args) {
        
        // 예외 실습 객체 인스턴스화
        ExceptionPractice exceptionPractice = new ExceptionPractice();

        // ✅ 체크예외 호출
        exceptionPractice.callCheckedException();
    }
}
  • throws 를 통해 예외를 호출한 곳으로 예외처리를 전가 할 수 있다.
public class ExceptionPractice {

    public void callCheckedException() throws Exception { // ✅ throws 예외를 상위로 전파
        if (true) {
            System.out.println("체크예외 발생");
            throw new Exception();
        }
    }
}

public class Main {
    public static void main(String[] args) {

        // 예외 실습 객체 인스턴스화
        ExceptionPractice exceptionPractice = new ExceptionPractice();

        // 체크 예외 사용
        // ✅ 반드시 상위 메서드에서 try-catch 를 활용해 주어야합니다.
        try {
            exceptionPractice.callCheckedException();
        } catch (Exception e) {
            System.out.println("예외처리");
        }
    }
}

4. 마무리

  • 예외 처리는 필수
  • CheckedException은 컴파일러를 통해 알 수 있다.
  • UncheckedException은 개발자가 예측 가능하고 방지할 수 있는 경우 사용한다.(모든 예외 상황을 강제로 처리 할 경우 코드가 불필요하게 많아 질 수 있어 생산성이 떨어진다.)
profile
개발공부 처음해보는 사람

0개의 댓글