finally 블록은 예외 발생 여부와 상관없이 항상 실행되는 블록입니다.
finally 구조
try {
// 코드
} catch (Exception e) {
// 예외 처리
} finally {
// 항상 실행되는 코드
}
위 코드에서 try 블록에서 예외가 발생하지 않으면, finally 블록이 실행됩니다. 만약 try 블록에서 예외가 발생하면, catch 블록이 실행되고, 그 다음으로 finally 블록이 실행됩니다.
finally 블록의 용도
- 리소스 관리 : 파일을 열거나 데이터베이스 연결을 할 때, 리소스를 사용하게 됩니다. 이때, 리소스를 반납하지 않으면 누수가 발생하여 다른 작업을 수행할 수 없습니다.
중첩된 try-catch-finally 구조
try {
try {
FileInputStream fis = new FileInputStream("file.txt");
// 파일 읽기
} catch (IOException e) {
// 예외 처리
} finally {
if (fis != null) {
fis.close();
}
}
} catch (IOException e) {
// 예외 처리
} finally {
// 항상 실행되는 코드
}
첫 번째 try 블록에서는 파일InputStream 객체를 생성하여 파일을 읽고, 예외가 발생하면 catch 블록에서 예외를 처리합니다. 그리고 finally 블록에서는 파일InputStream 객체를 close() 메서드를 호출하여 닫습니다.
두 번째 try 블록에서는 첫 번째 try 블록에서 발생한 예외를 다시 처리합니다. 그리고 finally 블록에서는 항상 실행되는 코드를 작성합니다.
finally 주의사항
- finally 블록 내에서도 예외가 발생할 수 있으므로 주의가 필요합니다.
'JAVA > 예외 처리' 카테고리의 다른 글
[JAVA] try-with-resources의 활용 (0) | 2023.08.28 |
---|---|
[JAVA] throw와 throws (0) | 2023.08.28 |
[JAVA] 여러 개의 catch 블록 사용 및 예외 처리 순서 (0) | 2023.08.28 |
[JAVA] try-catch 블록의 구조와 동작 원리 (0) | 2023.08.20 |
[JAVA] 예외가 발생하는 상황 (0) | 2023.08.20 |