처리되지 않은 C++ 예외
현재 예외에 대해 일치하는 처리기(또는 줄임표 catch
처리기)를 찾을 수 없는 경우 미리 정의된 terminate
런타임 함수가 호출됩니다. (처리기에서 명시적으로 호출 terminate
할 수도 있습니다.) 기본 동작 terminate
은 .를 호출 abort
하는 것입니다. 애플리케이션을 종료하기 전에 terminate
로 프로그램의 몇 가지 다른 함수를 호출하려면 단일 인수로 호출되는 함수 이름을 사용하여 set_terminate
함수를 호출합니다. set_terminate
는 프로그램에서 언제든지 호출할 수 있습니다. 루틴은 terminate
항상 인수로 지정된 마지막 함수를 호출합니다 set_terminate
.
예시
다음 예제에서는 예외를 char *
throw하지만 형식 char *
의 예외를 catch하도록 지정된 처리기를 포함하지 않습니다. set_terminate
호출은 terminate
가 term_func
를 호출하도록 명령합니다.
// exceptions_Unhandled_Exceptions.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;
void term_func() {
cout << "term_func was called by terminate." << endl;
exit( -1 );
}
int main() {
try
{
set_terminate( term_func );
throw "Out of memory!"; // No catch handler for this exception
}
catch( int )
{
cout << "Integer exception raised." << endl;
}
return 0;
}
출력
term_func was called by terminate.
term_func
함수는 exit
를 호출하여 프로그램이나 현재 스레드를 종료합니다. 이 호출이 호출자로 반환되면 abort
가 호출됩니다.
참고 항목
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기