Namespaces
Variants

std:: unexpected_handler

From cppreference.net
헤더 파일에 정의됨 <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 를 얻음
(함수)