- exception[meta header]
- std[meta namespace]
- function[meta id-type]
- cpp11[meta cpp]
- cpp11deprecated[meta cpp]
- cpp17removed[meta cpp]
namespace std {
using unexpected_handler = void(*)();
unexpected_handler get_unexpected() noexcept;
}
この関数はC++11から非推奨となり、C++17で削除された。throw
キーワードの代わりに使用するnoexcept
キーワードでは、指定外の例外が発生することによるエラーは起こらない。
予想外の例外が発生した場合の処理を行う関数を取得する。
予想外の例外が発生した場合の処理を行う関数へのポインタ。 (デフォルトではおそらくヌルになる)
#include <iostream>
#include <stdexcept>
void on_expected()
{
std::cout << "on expected" << std::endl;
}
int main()
{
std::unexpected_handler handler1 = std::get_unexpected();
if (!handler1) {
std::cout << "null handler" << std::endl;
}
std::set_unexpected(on_expected);
std::unexpected_handler handler2 = std::get_unexpected();
if (handler2) {
handler2();
}
}
- std::get_unexpected()[color ff0000]
- std::set_unexpected[link set_unexpected.md]
on expected
- C++11
- Clang: ??
- GCC: 4.9.0 [mark verified]
- ICC: ??
- Visual C++: 2012 [mark verified], 2013 [mark verified], 2015 [mark verified]