JAVA

Exception class

lshjju 2025. 11. 5. 16:41

프로그램을 만들다 보면 예상치 못한 실수나 상황으로 인해 프로그램이 갑자기 멈추는 일이 발생하곤 합니다.

자바에서는 이런 상황을 **'예외(Exception)'**라고 부르며, 이를 체계적으로 관리할 수 있는 도구들을 제공합니다.



📘 자바 예외: "프로그램의 비상상황 관리"

1. Exception class (모든 예외의 조상)

  • 설명: 자바에서 발생하는 모든 예외 사건들의 최상위 부모 클래스입니다.
  • 비유: 모든 종류의 사고 보고서를 담는 '사고 관리 대장'과 같습니다.
  • 특징: 프로그램 실행 중에 발생할 수 있는 가벼운 문제부터 심각한 문제까지 모든 예외 객체는 이 클래스를 상속받습니다.

2. General Exception (일반 예외 / Checked Exception)

  • 설명: 컴파일 시점에서 자바가 "이 부분은 위험해 보여!"라고 미리 경고해주는 예외입니다.
  • 비유: "공사 현장에 들어갈 땐 반드시 헬멧을 써야 한다"는 규칙과 같습니다.
  • 특징: 코드를 작성할 때 반드시 try-catch로 감싸거나 밖으로 던져야(throws) 하며, 그렇지 않으면 컴파일 자체가 되지 않습니다. (예: 존재하지 않는 파일 읽기, 네트워크 연결 오류 등)
Java
 
import java.io.FileReader;
import java.io.IOException;

public class GeneralExceptionExample {
    public static void main(String[] args) {
        try {
            // 파일을 읽는 행위는 위험하므로 반드시 예외 처리가 필요합니다. (General Exception)
            FileReader fr = new FileReader("none.txt");
        } catch (IOException e) {
            System.out.println("일반 예외 발생: 파일을 찾을 수 없습니다.");
        }
    }
}

3. Runtime Exception (실행 예외 / Unchecked Exception)

  • 설명: 컴파일은 잘 되지만, 프로그램이 돌아가는 도중에 개발자의 실수로 발생하는 예외입니다.
  • 비유: "길을 걷다 발이 꼬여서 넘어지는 것"과 같습니다. 미리 예측하기 어렵지만 충분히 주의하면 막을 수 있습니다.
  • 특징: 컴파일러가 강제하지 않기 때문에 개발자가 코드를 꼼꼼히 짜서 방지해야 합니다. (예: 0으로 나누기, 배열 인덱스 초과, 빈 객체 참조 등)
Java
 
public class RuntimeExceptionExample {
    public static void main(String[] args) {
        String str = null;
        
        try {
            // null인 객체의 메서드를 부르는 것은 개발자의 실수입니다. (Runtime Exception)
            System.out.println(str.length());
        } catch (NullPointerException e) {
            System.out.println("실행 예외 발생: 객체가 비어있습니다(null).");
        }
    }
}

👨‍🏫 쉽게 이해하는 핵심 포인트

  1. 에러(Error) vs 예외(Exception): 에러는 메모리 부족처럼 프로그램이 스스로 고칠 수 없는 심각한 상태이고, 예외는 코드 수정을 통해 우리가 수습할 수 있는 상태입니다.
  2. 강제성: 일반 예외는 **"안 하면 컴파일 안 해줌"**이고, 실행 예외는 **"일단 해주는데 조심해"**라고 이해하시면 명확합니다.
  3. 처리 방법: 예외가 발생하면 try { ... } 안의 코드가 멈추고 즉시 catch { ... } 블록으로 이동하여 프로그램이 죽지 않도록 방어해줍니다.

오늘의 요약

  • Exception: 프로그램 사고를 관리하는 클래스들의 부모.
  • General Exception: 파일, 네트워크 등 외부 요인에 의해 발생하며 예외 처리가 필수임.
  • Runtime Exception: 개발자의 논리적 실수에 의해 발생하며 예외 처리가 선택임.

자바의 안전장치인 예외 처리의 개념을 완벽히 잡으셨네요!


'JAVA' 카테고리의 다른 글

JAVA Statement and semicolon  (0) 2026.02.14
JAVA Default code analysis  (0) 2026.02.04
Promotion  (0) 2025.10.20
Inheritance  (0) 2025.10.09
Exception handing  (0) 2025.10.08