std::exception
出自 cppreference.com
| 定義於標頭檔 <exception> |
||
| class exception; |
||
提供一致的介面,透過 throw 表達式處理錯誤。
所有由標準程式庫產生的異常皆繼承自 std::exception。
|
|
(C++26 起) |
目錄 |
[編輯] 成員函式
| 建構異常物件 (公開成員函式) | |
| [虛擬] |
銷毀異常物件 (虛擬公開成員函式) |
| 複製異常物件 (公開成員函式) | |
| [虛擬] |
返回說明字串 (虛擬公開成員函式) |
[編輯] 標準異常要求
每個繼承自 std::exception 的標準程式庫類別 T 都具有下列可公開存取的成員函式,且每一個 都不會以異常退出(C++11 前)都具有 不拋出異常的規格 (non-throwing exception specification)(C++11 起)
複製建構函式與複製賦值運算子滿足以下後置條件
- 若兩個物件 lhs 與 rhs 的動態類型皆為
T,且 lhs 是 rhs 的複本,則 std::strcmp(lhs.what(), rhs.what()) 等於 0。
每個該類別 T 的 what() 成員函式皆滿足 std::exception::what() 所指定的約束。
[編輯] 標準異常
- range_error
- overflow_error
- underflow_error
- regex_error (C++11 起)
- system_error (C++11 起)
- ios_base::failure (C++11 起)
- filesystem::filesystem_error (C++17 起)
- tx_exception (TM TS)
- nonexistent_local_time (C++20 起)
- ambiguous_local_time (C++20 起)
- format_error (C++20 起)
- bad_any_cast (C++17 起)
- bad_optional_access (C++17 起)
- bad_expected_access (C++23 起)
- bad_weak_ptr (C++11 起)
- bad_function_call (C++11 起)
- bad_alloc
- bad_array_new_length (C++11 起)
- bad_exception
- ios_base::failure (C++11 前)
- bad_variant_access (C++17 起)
[編輯] 註解
| 功能測試巨集 | 數值 | 標準 | 功能 |
|---|---|---|---|
__cpp_lib_constexpr_exceptions |
202411L |
(C++26) | 異常類型的 constexpr |
[編輯] 缺陷報告
下列更改行為的缺陷報告追溯應用於之前的 C++ 標準。
| DR | 應用於 | 出版時的行為 | 正確的行為 |
|---|---|---|---|
| LWG 471 | C++98 | 曾對繼承自 std::exception 的標準程式庫類別沒有任何要求 |
已新增 |