ERRORHiSTORY

자바 예외 처리: 자주 사용하는 예외 및 처리 기법

jki09871 2024. 8. 6. 20:38

자바에서 예외 처리는 프로그램의 오류를 관리하고 안정성을 유지하는 데 필수적인 기능입니다. 예외 처리를 적절히 사용하면 프로그램이 예기치 않은 상황에서도 계속해서 실행될 수 있도록 할 수 있습니다. 이번 포스트에서는 자바에서 자주 사용하는 예외 처리 기법 5가지와 그 예제를 소개하겠습니다.

1. NullPointerException

설명: NullPointerException은 객체가 null일 때 객체의 메서드나 필드에 접근하려고 할 때 발생합니다. 이는 코드에서 참조가 잘못된 경우 발생할 수 있습니다.

 

예제 코드:

public class NullPointerExample {
    public static void main(String[] args) {
        String str = null;
        try {
            // str이 null이므로 예외가 발생합니다.
            int length = str.length();
        } catch (NullPointerException e) {
            System.out.println("NullPointerException 발생: 객체가 null입니다.");
        }
    }
} // 출력 : NullPointerException 발생: 객체가 null입니다.

설명: 위 코드에서는 str 변수가 null로 초기화되어 있기 때문에 str.length()를 호출하면 NullPointerException이 발생합니다. try-catch 블록을 사용하여 예외를 처리하고 사용자에게 적절한 메시지를 출력합니다.

2. ArrayIndexOutOfBoundsException

설명: ArrayIndexOutOfBoundsException은 배열의 유효한 인덱스 범위를 벗어난 인덱스에 접근하려고 할 때 발생합니다.

예제 코드:

public class ArrayIndexExample {
    public static void main(String[] args) {
        int[] array = {1, 2, 3};
        try {
            // 배열의 범위를 벗어난 인덱스에 접근합니다.
            int value = array[5];
        } catch (ArrayIndexOutOfBoundsException e) {
            System.out.println("ArrayIndexOutOfBoundsException 발생: 배열의 범위를 벗어난 인덱스입니다.");
        }
    }
}// 출력 : ArrayIndexOutOfBoundsException 발생: 배열의 범위를 벗어난 인덱스입니다.

설명: 위 코드에서는 배열의 인덱스 5에 접근하려고 하지만 배열의 길이는 3이므로 ArrayIndexOutOfBoundsException이 발생합니다. try-catch 블록으로 예외를 처리하여 오류 메시지를 출력합니다.

3. NumberFormatException

설명: NumberFormatException은 문자열을 숫자로 변환할 때 형식이 올바르지 않은 경우 발생합니다.

예제 코드:

public class NumberFormatExample {
    public static void main(String[] args) {
        String numberStr = "abc";
        try {
            // 문자열을 정수로 변환하려고 시도합니다.
            int number = Integer.parseInt(numberStr);
        } catch (NumberFormatException e) {
            System.out.println("NumberFormatException 발생: 문자열을 숫자로 변환할 수 없습니다.");
        }
    }
} // 출력 : NumberFormatException 발생: 문자열을 숫자로 변환할 수 없습니다.

설명: 위 코드에서는 "abc"라는 문자열을 정수로 변환하려고 시도하지만, 문자열 형식이 숫자가 아니기 때문에 NumberFormatException이 발생합니다. try-catch 블록을 사용하여 예외를 처리합니다.

4. IOException

설명: IOException은 입출력 작업 중에 오류가 발생할 때 발생합니다. 파일을 읽거나 쓸 때 주로 발생합니다.

예제 코드:

import java.io.FileReader;
import java.io.IOException;

public class IOExceptionExample {
    public static void main(String[] args) {
        try {
            FileReader file = new FileReader("nonexistentfile.txt");
        } catch (IOException e) {
            System.out.println("IOException 발생: 파일을 찾을 수 없습니다.");
        }
    }
} // 출력 : IOException 발생: 파일을 찾을 수 없습니다.

설명: 위 코드에서는 존재하지 않는 파일을 열려고 시도하기 때문에 IOException이 발생합니다. try-catch 블록을 사용하여 예외를 처리하고 사용자에게 파일이 존재하지 않는다는 메시지를 출력합니다.

5. ArithmeticException

설명: ArithmeticException은 수학 연산 중 오류가 발생할 때 발생합니다. 주로 0으로 나누려고 할 때 발생합니다.

예제 코드:

public class ArithmeticExceptionExample {
    public static void main(String[] args) {
        int a = 10;
        int b = 0;
        try {
            // 0으로 나누기 시도
            int result = a / b;
        } catch (ArithmeticException e) {
            System.out.println("ArithmeticException 발생: 0으로 나눌 수 없습니다.");
        }
    }
} // 출력 : ArithmeticException 발생: 0으로 나눌 수 없습니다.

설명: 위 코드에서는 b가 0이기 때문에 a / b에서 ArithmeticException이 발생합니다. try-catch 블록을 사용하여 예외를 처리하고 사용자에게 0으로 나눌 수 없다는 메시지를 출력합니다.