Skip to content

Latest commit

 

History

History
73 lines (57 loc) · 1.97 KB

bad_exception.md

File metadata and controls

73 lines (57 loc) · 1.97 KB

bad_exception

  • exception[meta header]
  • std[meta namespace]
  • class[meta id-type]
namespace std {
  class bad_exception : public exception;
}
  • exception[link /reference/exception/exception.md]

概要

bad_exceptionクラスは、関数に対して例外の型を制限し、指定外の型を送出した場合に発生する例外である。

このクラスの例外オブジェクトは自動で送出されるわけではなく、ユーザー自身がunexpected_handlerを指定してその中で例外オブジェクトの再送出を行うことで、bad_exception例外が送出される。

メンバ関数

名前 説明 対応バージョン
bad_exception() noexcept; bad_exception(const bad_exception&) noexcept; コンストラクタ
virtual ~bad_exception() = default; デストラクタ
bad_exception& operator=(const bad_exception&) noexcept; 代入演算子
virtual const char* what() const noexcept; 実装定義のエラー内容を取得する

#include <exception>
#include <stdexcept>
#include <iostream>

void user_unexpected()
{
  throw;
}

void not_runtime_error_throw() throw(std::runtime_error, std::bad_exception)
{
  throw std::invalid_argument("throw invalid_argument.");
}

int main()
{
  std::set_unexpected(user_unexpected);

  // std::runtime_error以外を送出
  try {
    not_runtime_error_throw();
  }
  catch (std::runtime_error& ex) {
    std::cout << "caught: " << ex.what() << std::endl;
  }
  catch (std::bad_exception& ex) {
    std::cout << "caught: bad_exception." << std::endl;
  }
}
  • std::bad_exception[color ff0000]
  • std::runtime_error[link /reference/stdexcept.md]
  • std::invalid_argument[link /reference/stdexcept.md]
  • std::unexpected[link unexpected.md]

出力

caught: bad_exception.

参照