이번 포스팅에서는 자바에서 중요한 개념인 예외 처리에 대해 알아보겠습니다. 예외 처리는 프로그램 실행 중 발생할 수 있는 오류를 관리하는 방법으로, 안정적인 프로그램을 만드는 데 필수적입니다. 그럼 예외 처리의 기본 개념과 예제를 통해 자세히 살펴보겠습니다.
1. 예외란?
예외(Exception)는 프로그램 실행 중 발생하는 비정상적인 상황을 의미합니다. 예를 들어, 사용자가 잘못된 입력을 하거나, 파일을 찾을 수 없거나, 네트워크 연결이 끊어지는 등의 상황이 예외에 해당합니다. 자바에서는 이러한 예외를 처리하기 위한 다양한 메커니즘을 제공합니다.
2. 예외의 종류
자바의 예외는 크게 두 가지로 나눌 수 있습니다:
2.1 Checked Exception
컴파일 시점에 체크되는 예외로, 반드시 처리해야 합니다. 예를 들어, IOException, SQLException 등이 있습니다.
2.2 Unchecked Exception
런타임 시점에 발생하는 예외로, 처리하지 않아도 컴파일 에러가 발생하지 않습니다. 예를 들어, NullPointerException, ArrayIndexOutOfBoundsException 등이 있습니다.
3. 예외 처리 방법
자바에서는 예외를 처리하기 위해 try, catch, finally 블록을 사용합니다.
3.1. try-catch 블록
try 블록 안에 예외가 발생할 가능성이 있는 코드를 작성하고, catch 블록에서 해당 예외를 처리합니다.
3.2. finally 블록
finally 블록은 예외 발생 여부와 관계없이 항상 실행되는 블록입니다. 주로 자원 해제와 같은 작업에 사용됩니다.
3.3. 예제
아래는 예외 처리를 사용하는 간단한 예제입니다.
import java.util.Scanner;
public class ExceptionHandlingExample {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
try {
System.out.println("정수를 입력하세요: ");
int number = scanner.nextInt();
int result = 100 / number; // 0으로 나누기 시도
System.out.println("결과: " + result);
} catch (ArithmeticException e) {
System.out.println("오류: 0으로 나눌 수 없습니다.");
} catch (java.util.InputMismatchException e) {
System.out.println("오류: 정수가 아닌 값을 입력했습니다.");
} finally {
System.out.println("프로그램 종료.");
scanner.close(); // 자원 해제
}
}
}
3.4. 예제 설명
- 입력 받기: 사용자가 정수를 입력하도록 요청합니다.
- try 블록: 사용자가 입력한 값을 100으로 나누는 작업을 시도합니다. 이때, 사용자가 0을 입력하면 ArithmeticException이발생합니다.
- catch 블록:
ArithmeticException이 발생하면 "0으로 나눌 수 없습니다."라는 메시지를 출력합니다.
InputMismatchException이 발생하면 "정수가 아닌 값을 입력했습니다."라는 메시지를 출력합니다.
- finally 블록: 예외 발생 여부와 관계없이 "프로그램 종료."라는 메시지를 출력하고, 스캐너를 닫아 자원을 해제합니다.
4. 사용자 정의 예외
자바에서는 사용자 정의 예외를 만들 수도 있습니다. 이를 통해 특정 상황에 맞는 예외를 정의하고 처리할 수 있습니다.
4.1. 사용자 정의 예외 예제
// 사용자 정의 예외 클래스
class InvalidAgeException extends Exception {
public InvalidAgeException(String message) {
super(message);
}
}
public class CustomExceptionExample {
public static void main(String[] args) {
try {
checkAge(15); // 15세는 유효하지 않은 나이
} catch (InvalidAgeException e) {
System.out.println("오류: " + e.getMessage());
}
}
static void checkAge(int age) throws InvalidAgeException {
if (age < 18) {
throw new InvalidAgeException("18세 이상이어야 합니다.");
}
System.out.println("나이 확인 완료: " + age);
}
}
4.2. 사용자 정의 예외 설명
InvalidAgeException 클래스: Exception 클래스를 상속받아 사용자 정의 예외를 만듭니다.
checkAge 메서드: 나이를 확인하고, 18세 미만일 경우 InvalidAgeException을 발생시킵니다.
메인 메서드: checkAge 메서드를 호출하고, 예외가 발생하면 해당 예외를 처리합니다.
5. 마치며
예외 처리는 자바 프로그래밍에서 매우 중요한 부분입니다. 예외를 적절히 처리함으로써 프로그램의 안정성을 높이고, 사용자에게 더 나은 경험을 제공할 수 있습니다. 예외 처리의 기본 개념과 사용법을 이해하고, 필요에 따라 사용자 정의 예외를 만들어 활용해 보세요.
'IT프로그램 언어 > Java' 카테고리의 다른 글
Java(인터페이스와 추상클래스) (1) | 2025.01.09 |
---|---|
Java(상속과 다형성) (5) | 2024.12.25 |
Java(객체지향 프로그래밍,OOP) (3) | 2024.12.21 |
Java(메소드의 매개변수와 반환값, 오버로딩) (3) | 2024.12.16 |
Java(메서드의 정의와 호출) (3) | 2024.12.13 |