java 예외처리java 예외처리 종류자바 예외처리 try catch자바 예외처리 예제자바 예외처리 throw

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

KUKJIN LEE
KUKJIN LEE
2024년 9월 9일
204

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 를 활용하면 다양한 예외 처리를 구현할 수 있고 예상하지 못한 상황에서 안전하게 동작할 수 있도록 설계할 수 있습니다.

관련 글

[SQL 입문] 필요한 데이터만 콕 집어 가져올 수 있는 WHERE 절

사용자는 테이블에 있는 모든 데이터를 다 보고 싶어 하지는 않습니다. 오히려 특정 항목에 대한 데이터만 가져오고 싶을 때가 훨씬 많습니다. 예를 들어, 어떤 사용자의 이메일이나 ID는 알고 있는데, 그 사람이 언제 우리 앱에 가입했는지 확인하고 싶다고 가정해 봅시다...

2026년 1월 27일10

SQL에서 SELECT란 무엇인가?

데이터베이스를 거대한 서류 보관함이라고 생각하면 됩니다. 보관함 안에는 수많은 데이터가 차곡차곡 쌓입니다. SELECT는 이 보관함에서 "내가 원하는 정보를 찾아줘!"라고 요청하는 명령어입니다. 이 과정을 전문 용어로 '쿼리(Query)'라고 부릅니다. &amp;nbs...

2026년 1월 26일10

[SQL 기초] "언제 하나씩 다 넣어?" 데이터 한 번에 넣기

개발을 하다 보면 데이터베이스(DB)에 샘플 데이터를 대량으로 넣어야 할 때가 있습니다. 메뉴 100개를 추가해야 하는데 INSERT 문을 100번 쓰고 있다면? 너무 비효율적이죠! 오늘은 SQL에서 여러 데이터를 한 번에 넣는 '다중 삽입(Multiple Inse...

2026년 1월 21일13

SQL 데이터 삽입하기

데이터가 없는 데이터베이스는 연료 없는 로켓과 같습니다. 이제 'Missions' 테이블에 새로운 행(row)을 추가하는 방법을 알아보겠습니다. "삽입(Inserting)"은 '데이터 추가'를 의미합니다. 기존 Missions 테이블 ...

2026년 1월 20일12