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();
}
}
出力
on expected
バージョン
言語
- C++11
処理系
- Clang: ??
- GCC: 4.9.0 ✅
- ICC: ??
- Visual C++: 2012 ✅, 2013 ✅, 2015 ✅