초기화에서 예외가 발생할 수 있다고 생각합니다. 그래서 try/catch 블록을 작성합니다.초기화/시도의 초기화 목록은 어떻게 작동합니까?
int f(){
throw 1;
}
class A
{
public:
A() try : _k(f())
{}
catch (int)
{
std::cout << "Exception 1" << std::endl;
}
private:
int _k;
};
그러나 catch는 한 수준 더 예외를 rethrows. 그게 의미 다음 코드가
try
{
A a;
} catch(int)
{
std::cout << "Exception 2" << std::endl;
}
출력됩니다 :
Exception 1
Exception 2
이 try/catch 블록은 같은 방법으로 보통 try/catch 블록을하지 동작하는 이유는 무엇입니까?
전체 코드 예제 : http://ideone.com/XjY2d 당신이 건설하고있는 객체가 정말 구축되지 않은
메모 : 'catch'블록을 빠져 나오지 않으면 자동으로 다시 시작됩니다. –