Share via


set_unexpected (CRT)

安裝您要由 unexpected 呼叫的專屬終止函式。

語法

unexpected_function set_unexpected( unexpected_function unexpFunction );

參數

unexpFunction
撰寫以取代 unexpected 函式的指標。

傳回值

傳回 _set_unexpected 所註冊之先前終止函式的指標,因此,稍後可以還原先前函式。 如果未設定任何先前的函式,則傳回值可用來還原預設行為;這個值可能是 NULL

備註

set_unexpected 函式透過 unexpected 呼叫時會安裝 unexpFunctionunexpected 不會在目前的 C++ 例外狀況處理實作中使用。 unexpected_function 類型定義於 EH.H 中,作為傳回 void 之使用者定義非預期函式 unexpFunction 的指標。 您的自訂 unexpFunction 函式不應該傳回其呼叫端。

typedef void ( *unexpected_function )( );

根據預設,unexpected 會呼叫 terminate。 您可以變更這個預設行為,方法是撰寫您自己的終止函式,並使用您的函式名稱作為引數呼叫 set_unexpectedunexpected 會呼叫指定為 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