Header Banner
GG Logo

Future Engineering

기술의 최전선을 기록합니다.

기술 자료/BackEnd/Java 기초 예외처리: 반드시 알아야 할 개념과 실전 가이드

Java 기초 예외처리: 반드시 알아야 할 개념과 실전 가이드

BackEnd11개월 전

Java에서 예외 처리(Exception Handling)는 오류가 발생할 수 있는 상황을 적절히 관리하고 프로그램의 비정상 종료를 방지하기 위해 필수적으로 알아야 할 개념입니다.

 

1. 예외(Exception)란 무엇인가?

예외는 프로그램 실행 중 발생할 수 있는 예기치 않은 상황을 의미합니다. 예를 들어, 파일을 읽으려 할 때 파일이 존재하지 않거나, 배열의 인덱스가 범위를 벗어나거나, 0으로 나누기를 시도하는 경우 등이 있습니다. 이러한 예외 상황이 발생하면 Java는 기본적으로 프로그램을 종료시키지만, 예외 처리를 통해 이를 적절히 관리할 수 있습니다.

  • Checked Exception: 컴파일러가 예외 처리를 강제하는 예외입니다. 예를 들어, 파일 입출력 작업 중 발생할 수 있는 IOException이 이에 해당합니다. 반드시 try-catch 블록이나 throws 키워드를 통해 처리해야 합니다.

  • Unchecked Exception: 컴파일러가 예외 처리를 강제하지 않는 예외입니다. 주로 프로그래머의 실수로 발생하는 런타임 예외들이며, 대표적으로 NullPointerException, ArrayIndexOutOfBoundsException 등이 있습니다. 이러한 예외는 개발자가 필요에 따라 처리할 수 있습니다.

 

3. 예외 처리 기본 문법

Java에서 예외 처리는 주로 try-catch 블록을 사용하여 이루어집니다.

try {
    // 예외가 발생할 가능성이 있는 코드
} catch (ExceptionType e) {
    // 예외가 발생했을 때 처리할 코드
} finally {
    // 선택 사항: 예외 발생 여부와 상관없이 항상 실행될 코드
}
  • try 블록: 예외가 발생할 수 있는 코드를 작성합니다.

  • catch 블록: 예외가 발생했을 때 해당 예외를 처리하는 코드를 작성합니다. 하나의 try 블록에 여러 개의 catch 블록을 사용할 수 있으며, 다양한 예외를 처리할 수 있습니다.

  • finally 블록: 선택적으로 사용할 수 있으며, 예외 발생 여부에 상관없이 항상 실행되는 코드입니다. 주로 자원 해제(예: 파일 닫기, 데이터베이스 연결 해제) 목적으로 사용됩니다.

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class FinallyExample {
    public static void main(String[] args) {
        Scanner scanner = null;
        try {
            File file = new File("example.txt");
            scanner = new Scanner(file);
        } catch (FileNotFoundException e) {
            System.out.println("파일을 찾을 수 없습니다: " + e.getMessage());
        } finally {
            if (scanner != null) {
                scanner.close();
            }
            System.out.println("finally 블록이 실행되었습니다.");
        }
    }
}

예외 던지기 (throw 키워드)

Java에서는 프로그래머가 의도적으로 예외를 발생시킬 수 있습니다. 이는 throw 키워드를 사용하여 특정 조건에서 예외를 강제로 던지는 방식입니다.

public class ThrowExample {
    public static void main(String[] args) {
        try {
            validateAge(15);
        } catch (IllegalArgumentException e) {
            System.out.println("예외 발생: " + e.getMessage());
        }
    }
    public static void validateAge(int age) {
        if (age < 18) {
            throw new IllegalArgumentException("나이는 18세 이상이어야 합니다.");
        }
    }
}

나이가 18세 미만일 경우 IllegalArgumentException을 발생시킵니다.

 

try, catch, throw 를 활용하면 다양한 예외 처리를 구현할 수 있고 예상하지 못한 상황에서 안전하게 동작할 수 있도록 설계할 수 있습니다.