Catch 블록에서 계산 (C++) 하는 방법을
일반적이 std::exception에서 파생 된 형식을 throw 할 것을 권장 하지만 C++에서는 모든 형식의 예외를 throw 할 수 있습니다.C + + 예외를 catch 할 수 있습니다는 catch 예외가 throw 또는 모든 형식의 예외를 catch 할 수 있는 처리기가 같은 종류를 지정 하는 처리기.
Throw 된 예외 클래스는 기본 클래스 (또는 클래스)에 있습니다 형식인 경우 기본 클래스는 예외 형식에는 물론 기지는 예외 형식에 대 한 참조를 사용 하는 처리기가 catch 할 수 있습니다.Note 참조로 인해 예외가 catch 되 면 실제 발생된 한 예외가 개체에 연결 되어 있습니다. 그렇지 않으면 복사본 (거의 같은 인수가 함수)입니다.
예외가 throw 되 면 종류를 통해 catch 될 수 있습니다 catch 처리기:
처리기 (줄임표 (...) 구문을 사용 하 여) 모든 형식에 사용할 수 있습니다.
예외 개체와 같은 형식을 허용 하는 처리기. 복사본이 들어 있기 때문에 const 및 volatile 한정자가 무시 됩니다.
예외 개체와 동일한 형식에 대 한 참조를 허용 하는 처리기.
에 대 한 참조를 허용 하는 처리기는 const 또는 volatile 는 예외 개체와 같은 형식의 폼.
기본 클래스는 예외 개체와 같은 형식의 허용 하는 처리기. 복사본을 하므로 const 및 volatile 한정자가 무시 됩니다.Catch 기본 클래스에 대 한 처리기 해야 하지 앞에 catch 파생된 클래스에 대 한 처리기입니다.
처리기에 대 한 참조를 기본 클래스는 예외 개체와 같은 형식의 허용 합니다.
에 대 한 참조를 허용 하는 처리기는 const 또는 volatile 기본 클래스는 예외 개체와 같은 형식의 형식입니다.
통해 표준 포인터 변환 규칙이 발생된 포인터가 개체를 변환할 수 있는 포인터를 허용 하는 처리기.
순서 catch 처리기가 표시 됩니다, 중요 하기 때문에 대 한 처리기는 주어진 시도 블록 모양 순서 대로 검사 됩니다.예를 들어, 파생된 클래스에 대 한 처리기 하기 전에 기본 클래스에 대 한 처리기를 배치 하는 오류입니다.일치 하는 후 catch 처리기를 찾을 수, 후속 처리기 검사 되지 않습니다.생략 부호는 결과 catch 처리기에 대 한 마지막 처리기 여야의 시도 블록입니다.예를 들면 다음과 같습니다.
// ...
try
{
// ...
}
catch( ... )
{
// Handle exception here.
}
// Error: the next two handlers are never examined.
catch( const char * str )
{
cout << "Caught exception: " << str << endl;
}
catch( CExcptClass E )
{
// Handle CExcptClass exception here.
}
이 예는 줄임표 (...) catch 처리기 검사 하는 유일한 처리기입니다.