try-catch-finally의 실행 순서 예제가 실행되는 순서
try의 좁은 작업 실행에서 시작해 finally 정리 뒤 결과 반환 또는 전파까지 값과 책임이 이동한다.
-
1
try의 좁은 작업 실행
너무 넓게 감싸면 어느 문장에서 난 예외인지와 어떤 상태가 변경됐는지 알기 어렵습니다.
-
2
가장 구체적인 catch 하나 선택
Exception을 먼저 잡으면 그 아래 IOException 같은 catch는 도달할 수 없어 컴파일 오류가 납니다.
-
3
finally 정리 뒤 결과 반환 또는 전파
관련 없는 여러 예외에 완전히 같은 복구가 필요하면 catch (A | B error)로 묶습니다.
실행 순서 성공과 두 실패 모두 finally를 거치지만 catch는 실제 예외 타입 하나만 선택합니다.