Future 결과는 완료·실패·취소·시간초과를 서로 다르게 처리한다

한 catch에서 모두 실패 문자열로 바꾸면 원인과 후속 정책을 잃습니다.

get 결과호출자가 어떤 상태를 받았는가

정상

값 사용

실행 실패

ExecutionException 원인 분류

취소

CancellationException

시간초과

계속·cancel 선택

핵심: TimeoutException은 작업을 자동 취소하지 않으므로 계속 둘지 cancel할지 별도 결정합니다.