namespace std {
class underflow_error : public runtime_error;
}
概要
underflow_errorクラスは、算術演算の結果がアンダーフロー(扱える値の下限を超過、または絶対値が小さすぎて表現できない)したことを通知するために送出される例外クラスである。
標準ライブラリのコンポーネントがこの例外を送出することはなく、ユーザーが使用できる。
このクラスはruntime_errorを公開継承しており、runtime_errorとして捕捉できる。
メンバ関数
| 名前 | 説明 | 対応バージョン |
|---|---|---|
(constructor) |
コンストラクタ | |
(destructor) |
デストラクタ | |
operator= |
代入演算子 | |
what |
エラー理由を取得する(std::exceptionから継承) |
例
#include <stdexcept>
#include <iostream>
#include <limits>
#include <cmath>
// 演算結果が非正規化数となり、精度が失われる場合をアンダーフローとして通知する
double divide(double a, double b)
{
double result = a / b;
if (result != 0.0 && std::abs(result) < std::numeric_limits<double>::min()) {
throw std::underflow_error("result is too small to represent");
}
return result;
}
int main()
{
try {
divide(1e-300, 1e10);
}
catch (const std::underflow_error& e) {
std::cout << e.what() << std::endl;
}
}
出力
result is too small to represent
関連項目
参照
- P3378R2
constexprexception types- C++26で
constexpr対応した
- C++26で