개발/JAVA

Java 예외 처리: 안전한 프로그램을 위한 기본 개념

예니03 2025. 1. 14. 11:21
반응형

프로그래밍을 하다 보면 예상치 못한 문제가 발생할 수 있습니다. 예를 들어, 0으로 나눌 때배열 범위를 벗어난 데이터에 접근할 때 오류가 발생할 수 있는데요. Java에서는 이러한 오류를 예외(Exception)라고 부릅니다.

이번 글에서는 Java의 예외 처리 방법과 그 중요성을 두 가지 예제를 통해 알아보겠습니다. 😊

1. 예외(Exception)란?

예외는 프로그램 실행 중 발생할 수 있는 문제를 뜻합니다. 예외가 발생하면 프로그램이 멈추고 오류 메시지를 출력하는데, 이를 방지하기 위해 Java는 예외 처리(Exception Handling)를 제공합니다.

2. 예외 처리의 기본 구조

Java에서 예외 처리는 try, catch, finally 블록을 사용합니다.

  • try: 예외가 발생할 가능성이 있는 코드를 작성.
  • catch: 발생한 예외를 잡아내고 처리.
  • finally: 예외 발생 여부와 관계없이 항상 실행되는 블록(선택 사항).
try {
    // 예외 발생 가능성 있는 코드
} catch (Exception e) {
    // 예외 처리 코드
} finally {
    // 항상 실행되는 코드 (선택 사항)
}

 

3. 예제 1: 0으로 나누기 예외 처리

문제 상황

사용자로부터 정수를 입력받아 100을 나누는 프로그램입니다.
만약 0을 입력하면 ArithmeticException이 발생합니다.

코드

import java.util.InputMismatchException;
import java.util.Scanner;

public class ArithmeticExceptionEx {
    public static void main(String[] args) {
        double result = 0;
        int num;
        Scanner scanner = new Scanner(System.in);

        System.out.print("정수 입력: ");
        try {
            num = scanner.nextInt();  // 정수를 입력받음
            result = 100 / num;       // 입력받은 정수로 나누기
        } catch (InputMismatchException e) {
            System.err.println("정수를 입력해 주세요.");  // 정수 외 입력 시 처리
        } catch (ArithmeticException e) {
            System.err.println("0으로는 나눌 수 없습니다.");  // 0 입력 시 처리
        } catch (Exception e) {
            e.printStackTrace();  // 기타 예외 처리
        } finally {
            System.out.println("예외처리 종료.");
        }
        System.out.println("결과: " + result);
        scanner.close();
    }
}

실행 결과

정상 입력

정수 입력: 5  
예외처리 종료.  
결과: 20.0  

0 입력

정수 입력: 0  
0으로는 나눌 수 없습니다.  
예외처리 종료.  
결과: 0.0  

잘못된 입력

정수 입력: Hello  
정수를 입력해 주세요.  
예외처리 종료.  
결과: 0.0  

설명

  • InputMismatchException: 정수가 아닌 값을 입력했을 때 발생.
  • ArithmeticException: 0으로 나누려고 할 때 발생.
  • finally: 입력 값이 올바르든 아니든 항상 실행됩니다.

 

4. 예제 2: 배열 범위를 벗어난 접근

문제 상황

배열에서 존재하지 않는 인덱스의 데이터를 출력하려고 하면 ArrayIndexOutOfBoundsException이 발생합니다.

코드

public class ArrayExceptionEx {
    public static void main(String[] args) {
        int[] intArray = {3, 6, 9};

        try {
            System.out.println(intArray[3]);  // 배열 범위를 벗어난 접근
        } catch (ArrayIndexOutOfBoundsException e) {
            System.err.println("Error: " + e.getMessage());  // 예외 처리
        } finally {
            System.out.println("예외 처리 종료");
        }
    }
}

실행 결과

Error: Index 3 out of bounds for length 3  
예외 처리 종료  

설명

  • ArrayIndexOutOfBoundsException: 배열의 길이를 벗어난 인덱스에 접근하려고 할 때 발생.
  • 예외 발생 시 친절한 메시지를 출력하여 문제를 알립니다.

 

5. 예외 처리의 중요성

  1. 프로그램 중단 방지
    예외 처리를 통해 프로그램이 예상치 못한 상황에서도 중단되지 않고 계속 실행될 수 있습니다.
  2. 사용자 경험 개선
    친절한 예외 메시지를 제공하면 사용자에게 문제를 명확히 전달할 수 있습니다.
  3. 코드의 안전성 강화
    예외 처리는 코드의 안정성을 높이고, 에러를 사전에 방지하는 데 도움을 줍니다.

 

6. 정리

Java에서 예외 처리는 프로그램의 안정성을 유지하는 데 필수적인 기술입니다.

  • try, catch, finally 블록을 활용하여 예외를 처리할 수 있습니다.
  • 다양한 예외 유형에 맞는 처리 방식을 적용해 사용자와 프로그램 모두에게 긍정적인 경험을 제공합니다.
반응형