보통 try .. catch 가 느리다고 주장할 때는 예외를 던지고 받는 일련의 과정의 비용이 크다고 이야기한다

그러나 제대로 비교하려면 예외를 사용하지 않고 전통적인 방식으로 오류 처리를 했을 때와 비교해야지

즉 함수 하나 하나 호출할 때마다 반환 값 확인해서 오류인지 아닌지 확인하는 코드와 성능을 비교해야 한다는 거다

심지어 printf도 실패할 우려가 있다. if (printf(..) == 오류) 해야 한다는 말

다들 알다시피 if 문은 비용이 비싸다. 분기 예측으로 커버는 되지만 이 역시 실패했을 때 손해가 어마어마하지

그런데 try .. catch 한 개로 if 문 수십 개를 없앨 수 있는 거다. 속도가 더 빠를 수밖에 없다

if 문은 프로그램 속도를 전체적으로 갉아 먹고, try .. catch 는 평소에 빠르다가 가끔 예외 터질 때만 크게 느려지는 거지

따라서 오류 발생 확률이 낮다면 try .. catch 를 쓰는 쪽이 더 빠르다

어떻게 보면 CPU 파이프라인과 발상이 비슷하지. 일반적인 상황에서 더 빠른 대가로 가끔 큰 비용을 치르는 것이다