std:: unexpected_handler
|
헤더 파일에 정의됨
<exception>
|
||
|
typedef
void
(
*
unexpected_handler
)
(
)
;
|
(C++11에서 사용 중단됨)
(C++17에서 제거됨) |
|
std::unexpected_handler
는 함수 포인터 타입(인자를 받지 않고 void를 반환하는 함수에 대한 포인터)으로,
std::set_unexpected
와
std::get_unexpected
함수에 의해 설치 및 조회되며,
std::unexpected
에 의해 호출됩니다.
C++ 구현은 기본적으로
std::unexpected_handler
함수를 제공하며, 이 함수는
std::terminate()
를 호출합니다. 널 포인터 값이 설치된 경우(
std::set_unexpected
를 통해), 구현체는 기본 핸들러를 복원할 수 있습니다.
사용자 정의
std::unexpected_handler
는 프로그램을 종료하거나 예외를 던질 것으로 예상됩니다. 만약 예외를 던지는 경우, 다음 세 가지 상황 중 하나가 발생할 수 있습니다:
1)
std::unexpected_handler
에 의해 발생된 예외는 이전에 위반된 동적 예외 명세를 충족합니다. 새로운 예외는 함수를 벗어나도록 허용되며 스택 풀기가 계속 진행됩니다.
2)
std::unexpected_handler
에 의해 발생된 예외가 여전히 예외 명세를 위반하는 경우:
2a) 그러나 예외 명세는 std::bad_exception 을 허용합니다: 던져진 예외 객체는 파괴되며, C++ 런타임에 의해 std::bad_exception 이 생성되어 대신 던져집니다.
2b) 예외 명세가 std::bad_exception 을 허용하지 않는 경우: std::terminate() 이 호출됩니다.
참고 항목
|
(C++11에서 사용 중단됨)
(C++17에서 제거됨)
|
동적 예외 사양이 위반될 때 호출되는 함수
(함수) |
|
(C++11에서 사용 중단됨)
(C++17에서 제거됨)
|
std::unexpected
에 의해 호출될 함수를 변경함
(함수) |
|
(C++11에서 사용 중단됨)
(C++17에서 제거됨)
|
현재
unexpected_handler
를 얻음
(함수) |