어느 날 전에 SO question의 독특한 구문을 보았습니다.이 구문의 의미는 무엇입니까?
class B{
A a;
public:
B() try : a() {} catch(string& s) { cout << &s << " " << s << endl; };
};
기능 밖에서이 try-catch-block의 의미는 무엇입니까?
어느 날 전에 SO question의 독특한 구문을 보았습니다.이 구문의 의미는 무엇입니까?
class B{
A a;
public:
B() try : a() {} catch(string& s) { cout << &s << " " << s << endl; };
};
기능 밖에서이 try-catch-block의 의미는 무엇입니까?
기능 블록입니다. 파생 클래스 생성자의 catch 오류에 대한 c-tors에만 유용합니다. 표준에서이 기능에 대한 자세한 내용은 n3337 초안을 참조하십시오. 15, 15.1.
4 function-try-block은 handler-seq를 ctor-initializer (있는 경우) 및 compound-statement와 연관시킵니다. 복합 문을 실행하는 동안 예외가 발생하거나 초기화 중에 생성자 및 소멸자의 경우 파괴가 발생하면 클래스 하위 개체의 각각 제어가 동일한 function-try-block의 처리기로 전송됩니다 방법으로 try 블록 실행 중에 예외가 발생하면 다른 핸들러로 제어가 전송됩니다. [실시 예 :
가
int f(int);
class C {
int i;
double d;
public:
C(int, double);
};
C::C(int ii, double id)
try : i(f(ii)), d(id) {
// constructor statements
}
catch (...) {
// handles exceptions thrown from the ctor-initializer
// and from the constructor statements
}
-end 예]
그것은 부재 객체를 생성 할 때 생성자에서 발생한 예외를 캐치
. 언급 한 질문에 대한 답변 중 하나는 세부 정보를 설명하는 링크 (http://www.gotw.ca/gotw/066.htm)입니다.
자세한 설명과 이론적 근거는 http://www.drdobbs.com/introduction-to-function-try-blocks/184401297을 참조하십시오. – pmr
와우 .. 한번도 본적이 없습니다 ... 답장을 보내 주셔서 감사합니다 – PermanentGuest
@PermanentGuest이 기능은 드물게 사용됩니다. catch 예외가 끝날 때 예외가 다시 발생하기 때문에 다른 예외는 발생하지 않습니다. function-try-block은 예외를 취할 수 없습니다. – ForEveR