CH12-2 · FLOW

try-catch-finally의 실행 순서 예제가 실행되는 순서

try의 좁은 작업 실행에서 시작해 finally 정리 뒤 결과 반환 또는 전파까지 값과 책임이 이동한다.

  1. 1
    try의 좁은 작업 실행

    너무 넓게 감싸면 어느 문장에서 난 예외인지와 어떤 상태가 변경됐는지 알기 어렵습니다.

  2. 2
    가장 구체적인 catch 하나 선택

    Exception을 먼저 잡으면 그 아래 IOException 같은 catch는 도달할 수 없어 컴파일 오류가 납니다.

  3. 3
    finally 정리 뒤 결과 반환 또는 전파

    관련 없는 여러 예외에 완전히 같은 복구가 필요하면 catch (A | B error)로 묶습니다.

실행 순서 성공과 두 실패 모두 finally를 거치지만 catch는 실제 예외 타입 하나만 선택합니다.