본문 바로가기
Programming

JAVA 예외 처리

by 나무수피아는 지식의 가지를 뻗어가는 공간입니다. 2025. 11. 18.
반응형

📘 예외 처리 (Exception Handling)

실행 중 발생할 수 있는 예외 상황을 처리하는 것은 프로그램의 안정성과 직결됩니다. 자바는 이러한 예외를 catch(잡아내고), throw(던지고), throws(선언하고) 등의 키워드로 처리할 수 있게 설계되어 있습니다. 또한, 사용자가 직접 예외 클래스를 정의하여, 상황에 맞는 의미 있는 예외처리도 가능하게 합니다.

이번 강의에서는 자바의 예외 처리 구조를 실제 예제를 통해 이해하고, try-catch-finally 구조, throw와 throws의 차이, 사용자 정의 예외 클래스까지 폭넓게 다룹니다.


📌 목차

  1. 예외 처리란?
  2. try-catch-finally 구조
  3. throw와 throws
  4. 사용자 정의 예외 클래스

🔹 1. 예외 처리란?

예외(Exception)는 프로그램 실행 중 정상적인 흐름을 방해하는 오류 상황입니다. 예를 들어, 0으로 나누거나, 존재하지 않는 파일을 읽으려 하거나, 배열의 인덱스를 초과하는 경우 등이 모두 예외에 해당됩니다.

예외를 처리하지 않으면 프로그램은 강제 종료됩니다. 따라서 예외 처리는 프로그램의 안정성 확보를 위해 필수입니다. 자바는 예외를 처리하는 여러 메커니즘을 제공합니다.


🔹 2. try-catch-finally 구조

자바에서 예외를 처리하는 가장 기본적인 방법은 try-catch-finally 구조입니다. 문제가 발생할 가능성이 있는 코드를 try 블록에 넣고, 예외가 발생했을 때의 처리를 catch에서 담당합니다. finally 블록은 예외 발생 여부와 관계없이 항상 실행됩니다.

public class Example {
    public static void main(String[] args) {
        try {
            int result = 10 / 0;
        } catch (ArithmeticException e) {
            System.out.println("0으로 나눌 수 없습니다!");
        } finally {
            System.out.println("항상 실행되는 finally 블럭");
        }
    }
}

출력 결과:
0으로 나눌 수 없습니다!
항상 실행되는 finally 블록

위 예제에서 10 / 0ArithmeticException을 발생시키며, catch 블록에서 이를 처리하고, finally는 예외 유무와 상관없이 실행됩니다.


🔹 3. throw와 throws

자바에서는 개발자가 직접 예외를 강제로 발생시킬 수 있는 기능을 제공합니다. 이때 사용하는 것이 throw 키워드이며, 메서드에서 예외 발생 가능성을 알릴 때는 throws 키워드를 사용합니다.

throw: 특정 예외 객체를 생성하고 직접 던질 때 사용
throws: 해당 메서드가 예외를 발생시킬 수 있음을 명시

public class ThrowExample {
    static void checkAge(int age) throws IllegalArgumentException {
        if (age < 18) {
            throw new IllegalArgumentException("18세 이상만 가능합니다.");
        }
        System.out.println("입장 가능합니다.");
    }

    public static void main(String[] args) {
        checkAge(15);
    }
}

출력:
Exception in thread "main" java.lang.IllegalArgumentException: 18세 이상만 가능합니다.

이처럼 특정 조건을 만족하지 않을 경우, 예외를 명시적으로 던져서 처리 흐름을 제어할 수 있습니다. 이 예제에서는 나이가 18세 미만이면 IllegalArgumentException을 직접 발생시키고 있습니다.


🔹 4. 사용자 정의 예외 클래스

자바에서는 내장된 예외 클래스 외에도, 개발자가 상황에 맞는 맞춤형 예외 클래스를 정의할 수 있습니다. 일반적으로 Exception 클래스를 상속받아 만들며, 생성자를 통해 예외 메시지를 전달할 수 있습니다.

class MyException extends Exception {
    public MyException(String message) {
        super(message);
    }
}

public class CustomExceptionExample {
    static void validate(int num) throws MyException {
        if (num < 100) {
            throw new MyException("값은 100 이상이어야 합니다.");
        }
        System.out.println("유효한 값입니다.");
    }

    public static void main(String[] args) {
        try {
            validate(50);
        } catch (MyException e) {
            System.out.println("예외 발생: " + e.getMessage());
        }
    }
}

출력 결과:
예외 발생: 값은 100 이상이어야 합니다.

이 예제에서는 MyException이라는 사용자 정의 예외를 만들어 특정 조건 위반 시 해당 예외를 던지고, 메인 메서드에서 이를 처리하고 있습니다. 사용자 정의 예외는 더 명확하고 의미 있는 예외 처리를 가능하게 해 줍니다.


✅ 마무리

예외 처리는 프로그램의 신뢰성사용자 경험을 지키는 데 매우 중요한 역할을 합니다. 자바는 이를 위한 다양한 구조와 키워드를 제공하며, 예외를 적절히 처리하면 프로그램이 예외 상황에서도 정상적으로 동작할 수 있습니다.

  • try-catch-finally 구조로 예외 발생 시 처리를 분리
  • throw / throws를 통해 예외 발생 및 전파를 명시
  • 사용자 정의 예외로 상황에 맞는 예외 구조 설계 가능

이제 실무 프로젝트나 문제 해결 시, 예외 처리 기법을 적극적으로 활용해 보세요. 🚀 프로그램의 완성도를 한층 끌어올릴 수 있습니다.

반응형

'Programming' 카테고리의 다른 글

JAVA 문자열 처리  (58) 2025.11.20
JAVA 컬렉션 프레임워크  (59) 2025.11.19
JAVA 객체지향 프로그래밍 (OOP)  (60) 2025.11.17
JAVA 패키지와 접근제한자  (38) 2025.11.16
JAVA 클래스와 객체  (45) 2025.11.15