Q : 스택을 푸는 데 예외가 발생해도 안전합니까? 아니면 응용 프로그램이 두 번째 throw에서 terminate
을 호출합니까?스택을 푸는 것이 안전할까요?
최소한의 예 :
void some_function()
{
try
{
// do stuff here that can throw
throw std::runtime_error("blah");
} catch(const std::exception& re)
{
try // this code could be in some function called from here
{
// do something with re here that throws a logical_error
throw std::logical_error("blah blah"); // does this call terminate?
} catch(const std::logical_error& le)
{
}
}
}
내가 this question을 읽고 호기심이 있어요.
참고 : 나는 소멸자해야 catch(...)
/당신이 할 수있는 알고 있지만, 그것은 일반적으로 의미가 catch
블록에 try/catch
을 할 수 있도록 않습니다 - 아마도 몇 가지 기능에 (내 예 re
)을 제외하고 호출?
그래도 스택 해제 중에는 그렇지 않습니다. 맞습니까? AFAIK, 일단 catch 블록이 입력되면 스택은 이미 풀린 상태입니다. – Pubby
Ahh ... thanks :) 대답으로 추가하면 받아 들일 것입니다. – utnapistim
닫을 필요가 없습니다. 잘못되었을 수 있습니다. 내 의견은 추측에 가깝습니다. – Pubby