RaiseException 函式 (errhandlingapi.h)

在呼叫線程中引發例外狀況。

語法

void RaiseException(
  [in] DWORD           dwExceptionCode,
  [in] DWORD           dwExceptionFlags,
  [in] DWORD           nNumberOfArguments,
  [in] const ULONG_PTR *lpArguments
);

參數

[in] dwExceptionCode

所引發例外狀況的應用程式定義例外狀況代碼。 例外狀況處理程式的篩選表達式和例外狀況處理程式區塊可以使用 GetExceptionCode 函式來擷取此值。

請注意,系統會在顯示訊息之前清除 dwExceptionCode 的位 28。此位是系統為了自己的用途而使用的保留例外狀況位。

[in] dwExceptionFlags

例外狀況旗標。 這可以是零表示持續性例外狀況,或EXCEPTION_NONCONTINUABLE表示不可限制的例外狀況。 在不可繼續的例外狀況之後,任何嘗試繼續執行都會造成EXCEPTION_NONCONTINUABLE_EXCEPTION例外狀況。

[in] nNumberOfArguments

lpArguments 陣列中的自變數數目。 此值不得超過EXCEPTION_MAXIMUM_PARAMETERS。 如果 lpArguments 為 NULL,則會忽略 此參數

[in] lpArguments

引數的陣列。 此參數可以是 Null。 這些自變數可以包含任何需要傳遞至例外狀況處理程式之篩選表達式的應用程式定義數據。

傳回值

此函式不會傳回值。

備註

RaiseException 函式可讓進程使用結構化例外狀況處理來處理私用、軟體產生的應用程式定義例外狀況。

引發例外狀況會導致例外狀況發送器進行下列例外狀況處理程序搜尋:

  1. 系統會先嘗試通知進程的調試程式,如果有的話。
  2. 如果未對進程進行偵錯,或相關聯的調試程式未處理例外狀況,系統會藉由搜尋發生例外狀況之線程的堆棧框架,嘗試尋找以框架為基礎的例外狀況處理程式。 系統會先搜尋目前的堆疊框架,然後向後繼續進行先前的堆疊框架。
  3. 如果找不到以框架為基礎的處理程式,或沒有框架型處理程式處理例外狀況,系統會嘗試第二次通知進程的調試程式。
  4. 如果未對進程進行偵錯,或相關聯的調試程式未處理例外狀況,系統會根據例外狀況類型提供默認處理。 在大部分的例外狀況中,默認動作是呼叫 ExitProcess 函式。

呼叫 GetExceptionInformation 函式,即可在框架型例外狀況處理程式的篩選表達式中擷取 dwExceptionCodedwExceptionFlagsnNumberOfArgumentslpArguments 參數中指定的值。 調試程式可以藉由呼叫 WaitForDebugEvent 函式來擷取這些值。

範例

如需範例,請參閱 使用例外狀況處理程式

規格需求

   
最低支援的用戶端 Windows XP [傳統型應用程式 |UWP 應用程式]
最低支援的伺服器 Windows Server 2003 [傳統型應用程式 |UWP 應用程式]
目標平台 Windows
標頭 errhandlingapi.h (包含 Windows.h)
程式庫 Kernel32.lib
DLL Kernel32.dll

另請參閱

ExitProcess

GetExceptionCode

GetExceptionInformation

結構化例外狀況處理函式

結構化例外狀況處理概觀

WaitForDebugEvent

VBS 記憶體保護區中可用的 Vertdll API