2012-07-20 3 views

답변

10

기능 블록입니다. 파생 클래스 생성자의 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 예]

그것은 부재 객체를 생성 할 때 생성자에서 발생한 예외를 캐치
+1

자세한 설명과 이론적 근거는 http://www.drdobbs.com/introduction-to-function-try-blocks/184401297을 참조하십시오. – pmr

+0

와우 .. 한번도 본적이 없습니다 ... 답장을 보내 주셔서 감사합니다 – PermanentGuest

+0

@PermanentGuest이 기능은 드물게 사용됩니다. catch 예외가 끝날 때 예외가 다시 발생하기 때문에 다른 예외는 발생하지 않습니다. function-try-block은 예외를 취할 수 없습니다. – ForEveR

관련 문제