Java에서 예외 처리는 프로그램 실행 중 발생할 수 있는 오류를 처리하기 위한 중요한 메커니즘입니다. 이를 통해 프로그램의 안정성을 높이고, 예기치 못한 상황에서도 정상적으로 작동하도록 만들 수 있습니다. 이번 글에서는 try, catch, throw 키워드를 사용하여 Java에서 예외를 처리하는 방법과 그 원리를 알아 보겠습니다.
1. 예외(Exception)란?
예외란 프로그램 실행 중 예기치 않은 상황이나 오류가 발생했을 때 이를 나타내는 객체입니다. 예외는 크게 두 가지로 나뉩니다
IOException
, SQLException
NullPointerException
, ArrayIndexOutOfBoundsException
2. 예외 처리 기본 구조
Java에서 예외 처리는 주로 try
, catch
, finally
, throw
, throws
키워드를 사용하여 이루어집니다.
기본 구조
try {
// 예외가 발생할 가능성이 있는 코드
} catch (ExceptionType e) {
// 예외가 발생했을 때 처리할 코드
} finally {
// (선택적) 항상 실행되는 코드
}
3. 예외 처리 예제
import java.io.*;
public class ExceptionExample {
public static void main(String[] args) {
try {
FileReader reader = new FileReader("example.txt");
BufferedReader br = new BufferedReader(reader);
System.out.println(br.readLine());
br.close();
} catch (IOException e) {
System.out.println("파일을 읽는 중 오류가 발생했습니다: " + e.getMessage());
}
}
}
출력: (파일이 없는 경우)
파일을 읽는 중 오류가 발생했습니다: example.txt (No such file or directory)
public class DivideByZeroExample {
public static void main(String[] args) {
try {
int result = 10 / 0;
} catch (ArithmeticException e) {
System.out.println("0으로 나눌 수 없습니다: " + e.getMessage());
}
}
}
출력
0으로 나눌 수 없습니다: / by zero
4. throw와 throws
예제:
public class ThrowExample {
public static void main(String[] args) {
try {
checkAge(15);
} catch (IllegalArgumentException e) {
System.out.println("예외 발생: " + e.getMessage());
}
}
public static void checkAge(int age) {
if (age < 18) {
throw new IllegalArgumentException("나이는 18세 이상이어야 합니다.");
}
}
}
출력
예외 발생: 나이는 18세 이상이어야 합니다.
예제
import java.io.*;
public class ThrowsExample {
public static void main(String[] args) throws IOException {
readFile("example.txt");
}
public static void readFile(String fileName) throws IOException {
FileReader reader = new FileReader(fileName);
BufferedReader br = new BufferedReader(reader);
System.out.println(br.readLine());
br.close();
}
}
5. finally 블록
finally
블록은 예외 발생 여부와 관계없이 항상 실행되는 코드 블록입니다. 주로 리소스를 해제하거나 정리하는 작업에 사용됩니다.
예제
public class FinallyExample {
public static void main(String[] args) {
try {
int[] arr = {1, 2, 3};
System.out.println(arr[5]);
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("배열 인덱스 초과: " + e.getMessage());
} finally {
System.out.println("예외 처리 종료.");
}
}
}
출력
배열 인덱스 초과: Index 5 out of bounds for length 3
예외 처리 종료.
6. 예외 처리의 장점
결론
Java에서의 예외 처리는 안정적이고 유지보수 가능한 프로그램을 개발하는 데 필수적인 요소입니다. try
, catch
, throw
와 같은 키워드를 적절히 활용하여 예외를 처리하고, 예외 상황에서도 프로그램이 정상적으로 작동할 수 있도록 설계해 보세요. 예외 처리를 통해 코드의 품질을 한 단계 업그레이드가 될 수 있습니다.
다음시간에는 Java 컬렉션 프레임워크 완벽 가이드: List, Set, Map의 차이점에 대해 알아 보겠습니다. 감사합니다.
디딤돌 전세 대출을 받은 실제 경험 바탕으로 포스팅을 작성합니다. 디딤돌 대출은 생애최초, 신혼부부 대출로 나뉘어져…
현대 웹 애플리케이션에서는 보안이 중요한 요소이며, Spring Security는 강력한 인증 및 권한 관리 기능을 제공합니다.…
애플리케이션 개발에서 로깅(logging)과 모니터링(monitoring)은 필수적인 요소입니다. Java 애플리케이션이 실행되는 동안 발생하는 이벤트를 기록하고, 성능 및…
API(Application Programming Interface)는 애플리케이션 간 데이터를 주고받기 위한 인터페이스로, Java에서는 주로 RESTful API와 GraphQL API를…
디자인 패턴(Design Patterns)은 소프트웨어 개발에서 자주 발생하는 문제를 해결하기 위한 일반적인 해결책을 제공합니다. 특히, GoF(Gang…
Java의 애너테이션(Annotation)은 메타데이터를 코드에 추가하는 기능을 제공합니다. 이를 활용하면 코드의 가독성을 높이고, 프레임워크에서 런타임 처리를…