set_unexpected
(CRT)
安裝您要由 unexpected
呼叫的專屬終止函式。
語法
unexpected_function set_unexpected( unexpected_function unexpFunction );
參數
unexpFunction
撰寫以取代 unexpected
函式的指標。
傳回值
傳回 _set_unexpected
所註冊之先前終止函式的指標,因此,稍後可以還原先前函式。 如果未設定任何先前的函式,則傳回值可用來還原預設行為;這個值可能是 NULL
。
備註
set_unexpected
函式透過 unexpected
呼叫時會安裝 unexpFunction
。 unexpected
不會用於目前C++例外狀況處理實作。 unexpected_function
類型定義於 EH.H 中,作為傳回 void
之使用者定義非預期函式 unexpFunction
的指標。 您的自定義 unexpFunction
函式不應該傳回其呼叫端。
typedef void ( *unexpected_function )( );
根據預設,unexpected
會呼叫 terminate
。 您可以變更這個預設行為,方法是撰寫您自己的終止函式,並使用您的函式名稱作為引數呼叫 set_unexpected
。 unexpected
會呼叫指定為 set_unexpected
引數的最後一個函式。
與 set_terminate
呼叫所安裝的自訂終止函式不同,可以從 unexpFunction
擲回例外狀況。
在多執行緒環境中,會分別維護每個執行緒的未預期函式。 每個新執行緒都需要安裝它自己的未預期函式。 因此,每個執行緒都會負責它自己的未預期處理。
在目前的 Microsoft C++ 例外狀況處理實作中,unexpected
預設會呼叫 terminate
,而且例外狀況處理執行階段程式庫絕不會呼叫它。 呼叫 unexpected
而不是 terminate
沒有特別的優點。
所有動態連結 DLL 或 EXE 都有單 set_unexpected
一處理程式;即使您呼叫 set_unexpected
您的處理程式可能由另一個 DLL 或 EXE 取代,或取代另一個 DLL 或 EXE 所設定的處理程式也一樣。
需求
常式 | 必要的標頭 |
---|---|
set_unexpected |
<eh.h> |
如需相容性詳細資訊,請參閱相容性。
另請參閱
例外狀況處理例程
abort
_get_unexpected
set_terminate
terminate
unexpected