Java에서 try/catch 구문을 사용하여 예외를 처리하는 경우는 여러 가지가 있습니다. 예외는 프로그램 실행 중 발생할 수 있는 오류 상황을 처리하기 위해 사용되며, try/catch 구문은 예외가 발생할 수 있는 코드 블록을 감싸고, 발생한 예외를 처리하는 데 사용됩니다. 주요 경우들을 다음과 같이 정리할 수 있습니다.
1. 기본적인 try/catch 예외 처리
가장 기본적인 형태로, 예외가 발생할 가능성이 있는 코드를 try 블록 안에 두고, 예외가 발생했을 때 이를 처리할 catch 블록을 사용합니다.
try {
// 예외가 발생할 수 있는 코드
int result = 10 / 0;
} catch (ArithmeticException e) {
// 예외를 처리하는 코드
System.out.println("ArithmeticException 발생: " + e.getMessage());
}
2. 여러 개의 예외 처리
하나의 try 블록에서 여러 종류의 예외를 처리할 수 있습니다. 이를 위해 여러 catch 블록을 사용합니다.
try {
// 예외가 발생할 수 있는 코드
String str = null;
str.length();
} catch (NullPointerException e) {
// NullPointerException 처리
System.out.println("NullPointerException 발생: " + e.getMessage());
} catch (Exception e) {
// 다른 모든 예외 처리
System.out.println("예기치 않은 예외 발생: " + e.getMessage());
}
3. 다중 예외 타입을 하나의 catch로 처리하기 (Java 7 이상)
Java 7부터는 여러 개의 예외 타입을 하나의 catch 블록에서 처리할 수 있습니다. 이때 각 예외 타입은 | 연산자로 구분합니다.
try {
// 예외가 발생할 수 있는 코드
String str = null;
str.length();
} catch (NullPointerException | ArithmeticException e) {
// 여러 예외를 처리
System.out.println("예외 발생: " + e.getMessage());
}
4. 예외 발생 후 처리 (finally 블록)
finally 블록은 예외가 발생하든 발생하지 않든 항상 실행되는 블록입니다. 예를 들어, 자원을 해제하거나, 데이터베이스 연결을 닫는 등의 처리를 할 때 사용됩니다.
try {
// 예외가 발생할 수 있는 코드
int result = 10 / 0;
} catch (ArithmeticException e) {
// 예외를 처리하는 코드
System.out.println("ArithmeticException 발생: " + e.getMessage());
} finally {
// 예외 발생 여부와 관계없이 항상 실행
System.out.println("finally 블록 실행");
}
5. try/catch 중첩 (Nested try/catch)
try/catch 구문은 중첩하여 사용할 수 있습니다. 예외 처리에서 예외가 또 발생할 수 있는 경우 중첩된 try/catch를 사용합니다.
try {
// 외부 예외가 발생할 수 있는 코드
try {
// 내부 예외가 발생할 수 있는 코드
String str = null;
str.length();
} catch (NullPointerException e) {
System.out.println("내부 예외 발생: " + e.getMessage());
}
} catch (Exception e) {
System.out.println("외부 예외 발생: " + e.getMessage());
}
6. throw와 함께 사용하여 예외 던지기
throw를 사용하여 예외를 명시적으로 던질 수 있으며, 이때 예외는 호출된 try/catch 구문으로 전달됩니다.
try {
throw new Exception("예외 강제 발생");
} catch (Exception e) {
System.out.println("예외 처리: " + e.getMessage());
}
7. throws와 함께 예외 전파하기
메서드에서 예외를 처리하지 않고, 호출한 곳으로 예외를 전파하려면 throws를 사용하여 예외를 선언합니다. 이때 호출한 곳에서 예외를 처리해야 합니다.
public void someMethod() throws IOException {
throw new IOException("파일 읽기 오류");
}
try {
someMethod();
} catch (IOException e) {
System.out.println("IOException 처리: " + e.getMessage());
}
8. Checked Exception과 Unchecked Exception 구분
- Checked Exception: IOException, SQLException 등 컴파일 타임에서 반드시 처리해야 하는 예외. 이 예외들은 try/catch 또는 throws로 처리해야 합니다.
- Unchecked Exception: NullPointerException, ArrayIndexOutOfBoundsException 등 런타임 예외. 이들은 선택적으로 처리할 수 있습니다.
9. try-with-resources (Java 7 이상)
try-with-resources는 자원(예: 파일, 데이터베이스 연결 등)을 자동으로 닫아주는 기능입니다. AutoCloseable 인터페이스를 구현한 객체에 대해 사용합니다.
try (BufferedReader br = new BufferedReader(new FileReader("file.txt"))) {
String line = br.readLine();
System.out.println(line);
} catch (IOException e) {
System.out.println("파일 읽기 오류: " + e.getMessage());
}
// 자동으로 br.close()가 호출됨
결론
try/catch 구문을 사용하여 예외를 처리하는 방법에는 다양한 패턴이 있습니다. 예외 발생 가능성이 있는 코드 블록을 감싸고, 발생한 예외를 적절히 처리할 수 있는 방법을 선택하는 것이 중요합니다. 예외를 처리하는 방식은 코드의 안정성 및 가독성에 큰 영향을 미치므로, 상황에 맞는 예외 처리 방법을 선택해야 합니다.
'일상 > 챗지피티 선생님' 카테고리의 다른 글
챗지피티에게 물어본 자바에서 칼럼 폭 조절하는 방법과 칼럼 별 정렬 방법 (0) | 2025.01.02 |
---|---|
챗지피티가 알려준 origin/master 브랜치 다시 보이게 하는 방법 (0) | 2024.12.20 |
챗지피티가 알려준 markdown 언어 (0) | 2024.12.19 |
챗지피티가 알려준 GIT 명령어 (0) | 2024.12.17 |
자바 풀스택 학원 가기 전 준비(feat.챗GPT) (3) | 2024.11.09 |