1. 예외처리란 무엇인가?
예외는 프로그램 실행 중에 발생할 수 있는 오류를 의미합니다. 예외가 발생하면 프로그램이 비정상적으로 종료될 수 있으므로, 예외를 적절히 처리하는 것이 중요합니다. 자바에서는 예외를 처리하여 프로그램이 계속 실행되도록 할 수 있습니다.
2. 자바의 예외 클래스 구조
자바에서는 예외를 처리하기 위해 Throwable 클래스를 사용합니다. Throwable 클래스는 두 가지 주요 하위 클래스를 가지고 있습니다:
- Exception: 주로 프로그램에서 발생하는 예외를 처리합니다.
- Error: 주로 JVM의 오류를 나타내며, 일반적으로 프로그램에서 처리하지 않습니다.
3. 예외처리 구문
try-catch 블록
예외처리는 try 블록 안에서 예외가 발생할 수 있는 코드를 작성하고, catch 블록에서 그 예외를 처리하는 방식으로 이루어집니다.
try {
// 예외가 발생할 수 있는 코드
} catch (Exception e) {
// 예외가 발생했을 때 처리할 코드
}
finally 블록
finally 블록은 예외 발생 여부와 관계없이 항상 실행되는 코드 블록입니다. 주로 자원을 해제하는 데 사용됩니다.
try {
// 예외가 발생할 수 있는 코드
} catch (Exception e) {
// 예외가 발생했을 때 처리할 코드
} finally {
// 항상 실행되는 코드
}
4. 예외 발생시키기
프로그램에서 명시적으로 예외를 발생시키려면 throw 키워드를 사용합니다.
if (condition) {
throw new Exception("예외 메시지");
}
또한, 메서드가 예외를 던질 수 있음을 선언하려면 throws 키워드를 사용합니다.
public void myMethod() throws Exception {
// 코드
}
5. 자주 사용되는 예외 클래스
자바에서 자주 사용되는 몇 가지 예외 클래스를 소개합니다:
- IOException: 입출력 작업에서 발생하는 예외
- SQLException: 데이터베이스 작업 중 발생하는 예외
- NullPointerException: null 참조에 접근하려 할 때 발생하는 예외
- IllegalArgumentException: 부적절한 인자가 전달될 때 발생하는 예외
6. 사용자 정의 예외
특정 도메인에 맞는 예외를 정의하여 더 명확한 예외 처리를 가능하게 할 수 있습니다. 이를 위해 사용자 정의 예외 클래스를 만들 수 있습니다.
public class MyCustomException extends Exception {
public MyCustomException(String message) {
super(message);
}
}
간단한 자바 예외처리 예제
숫자 나누기 예제
사용자로부터 두 개의 숫자를 입력받아 나누기를 수행하고, 나눗셈 과정에서 발생할 수 있는 예외를 처리하는 간단한 예제입니다.
import java.util.Scanner;
public class DivisionExample {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
try {
System.out.print("첫 번째 숫자를 입력하세요: ");
int num1 = scanner.nextInt();
System.out.print("두 번째 숫자를 입력하세요: ");
int num2 = scanner.nextInt();
int result = num1 / num2;
System.out.println("결과: " + result);
} catch (ArithmeticException e) {
System.out.println("0으로 나눌 수 없습니다.");
} catch (Exception e) {
System.out.println("잘못된 입력입니다.");
} finally {
scanner.close();
System.out.println("프로그램을 종료합니다.");
}
}
}
예제 코드 설명
- Scanner 사용: 사용자로부터 입력을 받기 위해 Scanner 객체를 사용합니다.
- try 블록: 숫자를 입력받고 나눗셈을 수행하는 코드가 포함되어 있습니다. 예외가 발생할 수 있는 코드를 try 블록 안에 넣습니다.
- catch 블록: 두 가지 예외를 처리합니다.
- ArithmeticException: 0으로 나누는 경우 발생합니다.
- Exception: 기타 모든 예외를 처리합니다. 여기서는 주로 잘못된 입력을 처리합니다.
- finally 블록: Scanner 객체를 닫고, 프로그램 종료 메시지를 출력합니다.
추가 예제: 배열 요소 접근
배열의 요소를 접근하는 과정에서 발생할 수 있는 예외를 처리하는 예제입니다.
public class ArrayExample {
public static void main(String[] args) {
int[] numbers = {1, 2, 3, 4, 5};
try {
System.out.println("배열의 여섯 번째 요소: " + numbers[5]);
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("잘못된 인덱스 접근입니다. 배열의 크기를 확인하세요.");
}
System.out.println("프로그램을 종료합니다.");
}
}
예제 코드 설명
- 배열 사용: numbers라는 정수 배열을 정의하고 초기화합니다.
- try 블록: 배열의 여섯 번째 요소에 접근하는 코드가 포함되어 있습니다.
- catch 블록: ArrayIndexOutOfBoundsException을 처리하여 잘못된 인덱스 접근 시 경고 메시지를 출력합니다.
'JAVA' 카테고리의 다른 글
쓰레드(Thread)란? (0) | 2024.07.25 |
---|---|
객체지향(제네릭(Generic)) (0) | 2024.07.24 |
객체지향(추상 클래스 (Abstract Class) ,인터페이스 (Interface)) (0) | 2024.07.24 |
객체지향(오버로딩 (Overloading), 오버라이딩 (Overriding)) (0) | 2024.07.24 |
객체지향(상속) (0) | 2024.07.24 |