본문 바로가기
Java/기본 문법

예외(Exception)와 예외 처리(try-catch)

by 정구정구 2026. 5. 20.

예외(Exception)

프로그램 실행 중 예상하지 못한 상황이 발생하는 것 ( 0으로 나누기 등)

  • 의도하지 않은 예외 : 0으로 나누기 등 -> 예외처리 하지 않으면 이후 코드가 실행되지 않음
  • 의도적인 예외 : 아래 코드와 같이 특정 조건에서 의도적으로 예외를 발생 시킴.(throw 키워드를 통해)
public class Main {
    public static void main(String[] args) {
        int age = 10;
        if (age < 18) {
		        // 의도적으로 예외를 발생시키는 부분
            throw new IllegalArgumentException("미성년자는 접근할 수 없습니다!");
        }
        System.out.println("....");
    }
}

 

 

RuntimeException - CheckedException

컴파일러가 예외처리를 강제하지 않는 예외

 

Exception - CheckedException

컴파일러가 예외처리를 강제하는 예외

  • 예외처리를 컴파일러가 확인하지 않음
  • RuntimeExceprion과 이를 상속받는 예외는 제외됨

 

 

예외 처리(try-catch)

예외 발생 시 프로그램 종료를 방지하고 처리하는 방법

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("프로그램 종료");
    }
}

 

throws

throw 키워드를 통해 이 메서드를 호출한 곳에서 예외 처리를 하도록 강제할 수 있음.

public class ExceptionPractice {

    public void callCheckedException() throws Exception { // ✅ throws 예외를 상위로 전파
        if (true) {
            System.out.println("체크예외 발생");
            throw new Exception();
        }
    }
}
package chapter3.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("예외처리");
        }
    }
}

'Java > 기본 문법' 카테고리의 다른 글

람다(Lambda)  (0) 2026.05.21
제네릭(Generic)  (0) 2026.05.20
Collection  (0) 2026.05.20
Optional  (0) 2026.05.20
record  (0) 2026.05.15