Skip to content

Latest commit

 

History

History
71 lines (56 loc) · 1.7 KB

get_unexpected.md

File metadata and controls

71 lines (56 loc) · 1.7 KB

get_unexpected

  • 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]

参照