std::unexpected_handler
出自cppreference.com
在標頭 <exception> 定義
|
||
typedef void (*unexpected_handler)(); |
(C++11 棄用) (C++17 移除) |
|
std::unexpected_handler
是函數指針類型(指向不接收實參並返回 void 的函數),它由函數 std::set_unexpected 所安裝,由 std::get_unexpected 所查詢,並由 std::unexpected 所調用。
C++ 實現提供默認的 std::unexpected_handler
函數,它調用 std::terminate()。若安裝空指針值(用 std::set_unexpected),則實現可以替代地恢復默認處理函數。
期待用戶定義的 std::unexpected_handler
終止程序或拋出異常。若它拋出異常,則可能遇到下列三種情況之一:
1) std::unexpected_handler
所拋的異常滿足之前被違背的動態異常規定。則允許新異常逃出函數並繼續棧回溯。
2) std::unexpected_handler
所拋的異常仍然違背動態異常規定:
2a) 然而,異常規定允許 std::bad_exception:C++ 運行時銷毀拋出的異常對象,並構造 std::bad_exception 替代地拋出。
2b) 異常規定不允許 std::bad_exception:調用 std::terminate()。
[編輯] 參閱
(C++11 棄用)(C++17 移除) |
違背動態異常說明時調用的函數 (函數) |
(C++11 棄用)(C++17 移除) |
更改要被 std::unexpected 調用的函數 (函數) |
(C++11 棄用)(C++17 移除) |
獲得當前的 unexpected_handler (函數) |