자바에서 try-catch 문은 어떻게 작동하나요?
자바에서 try-catch 문은 예외(Exception)를 처리하기 위해 사용하는 구문입니다.
프로그램 실행 중에 오류가 발생할 가능성이 있는 코드 블록을 `try` 블록 안에 작성하고, 해당 오류가 발생했을 때 실행할 대체 코드나 예외 처리 코드를 `catch` 블록 안에 작성합니다.
작동 원리 1. try 블록 안에 예외가 발생할 수 있는 코드를 작성합니다.
2. try 블록 내에서 예외가 발생하면 즉시 실행이 중단되고, 발생한 예외의 타입과 일치하는 `catch` 블록이 있는지 탐색합니다.
3. 해당 예외 타입과 맞는 `catch` 블록이 있다면, 그 블록이 실행됩니다.
4. 만약 일치하는 `catch` 블록이 없다면, 예외는 호출한 상위 메서드로 전파(propagation)됩니다.
5. 예외가 처리된 후에는 try-catch 블록 다음의 코드가 계속 실행됩니다.
기본 문법 ```java try { // 예외가 발생할 가능성이 있는 코드 } catch (ExceptionType1 e) { // ExceptionType1 예외 처리 코드 } catch (ExceptionType2 e) { // ExceptionType2 예외 처리 코드 } finally { // 예외 발생 여부와 상관없이 항상 실행되는 코드 (생략 가능) } ``` - `try` 블록: 예외 발생 가능성이 있는 코드를 넣습니다.
- `catch` 블록: 특정 예외를 잡아서 처리합니다.
여러 개를 작성할 수 있습니다.
- `finally` 블록: 예외 발생 여부와 관계없이 항상 실행되는 구문으로, 주로 자원 정리 등을 할 때 사용합니다.
필요에 따라 생략 가능합니다.
예제 ```java public class Example { public static void main(String[] args) { try { int[] numbers = new int[3]; System.out.println(numbers[5]); // ArrayIndexOutOfBoundsException 발생 } catch (ArrayIndexOutOfBoundsException e) { System.out.println("배열 인덱스가 범위를 벗어났습니다.
"); } finally { System.out.println("예외 처리 완료"); } System.out.println("프로그램 계속 실행"); } } ``` 출력 결과 ``` 배열 인덱스가 범위를 벗어났습니다.
예외 처리 완료 프로그램 계속 실행 ``` 위 예제에서 배열의 잘못된 인덱스 접근으로 예외가 발생했지만, `catch` 블록에서 예외를 잡아 메시지를 출력했습니다.
그리고 `finally` 블록을 통해 항상 "예외 처리 완료" 메시지를 출력했습니다.
예외 발생 후에도 프로그램은 정상적으로 이어서 실행됩니다.
--- 자바의 try-catch 문은 프로그램 흐름 내에서 발생할 수 있는 예외 상황을 안전하게 처리하고, 예외로 인해 프로그램이 비정상 종료되지 않도록 돕는 중요한 구조입니다.