Namespaces
Variants

std::unexpected

출처 ko.cppreference.net
 
 
 
헤더에 정의됨 <exception>
void unexpected();
(C++11까지)
[[noreturn]] void unexpected();
(C++11부터)
(C++17까지)
(C++11에서 비권장됨)

std::unexpected()는 C++ 런타임이 다음 경우에 호출됩니다: 동적 예외 명세가 위반될 때 호출됩니다: 예외 명세가 이 유형의 예외를 금지하는 함수에서 예외가 발생한 경우입니다.

std::unexpected()는 프로그램에서 직접 호출될 수도 있습니다.

어느 경우든, std::unexpected는 현재 설치된 std::unexpected_handler. 기본 std::unexpected_handler가 호출합니다 std::terminate.

소멸자가 스택 풀기 중에 예상치 못한 핸들러를 재설정하고 나중에 스택 풀기가 unexpected 호출로 이어진 경우, throw 표현식 끝에 설치된 핸들러가 호출됩니다 (참고: 재던지기가 새 핸들러를 적용하는지 여부는 모호했습니다).

(C++11까지)

소멸자가 스택 풀기 중에 예상치 못한 핸들러를 재설정한 경우, 나중에 스택 풀기가 unexpected 호출로 이어지면 어떤 핸들러가 호출될지는 명세되지 않습니다.

(C++11부터)

예외

현재 설치된 std::unexpected_handler 가 던지는 모든 예외를 throw합니다.

결함 보고서

다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.

DR 적용 대상 게시된 동작 올바른 동작
LWG 2111 C++11 스택 풀기 중 std::set_unexpected 호출의 효과가
C++98과 다르며 일부 ABI를 깨뜨림
미지정으로 변경

참고 항목

(C++23)
예상치 못한 값으로 표현됨
(클래스 템플릿)
(C++11에서 사용 중단됨) (C++17에서 제거됨)
std::unexpected 에 의해 호출되는 함수의 타입
(typedef)