너님들이 C++ 런타임 라이브러리라면 어떻게 할 건가요?



스택에 할당된 Foo클래스의 인스턴스의 소멸자 안에서 예외가 발생해서 Bar가 던져지면,

1. Bar를 무시하고 계속 하던거 할까요 아니면

2. 중간에 나가서 catch(Bar bar)를 찾으러 갈까요?


1대로 하면 이건 완전히 로직 상 에러고(그럼 예외가 무슨 필요인가요)

2대로 하면 Foo는 소멸되다 말고, 그리고 또 소멸자가 호출되어야 할 인스턴스들이 더 있을지도 모르는 상황에, 어디 있을지도 모를 예외 처리자를 찾아가다니. 이래도 좆됨


그래서 어떻게 해도 좆 되긴 마찬가지

그래서 C++ 표준에선 소멸자에서 예외가 처리되지 않고 빠져나오면 terminate를 호출하도록 되어 있습니다.


물론 스택이 아니라 힙에 할당된 거면 뭐 상관 없습니다.