Condividi tramite


Funzione RaiseException (errhandlingapi.h)

Genera un'eccezione nel thread chiamante.

Sintassi

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

Parametri

[in] dwExceptionCode

Codice eccezione definito dall'applicazione dell'eccezione generata. L'espressione di filtro e il blocco del gestore eccezioni di un gestore eccezioni possono usare la funzione GetExceptionCode per recuperare questo valore.

Si noti che il sistema cancella il bit 28 di dwExceptionCode prima di visualizzare un messaggio Questo bit è un bit di eccezione riservata, usato dal sistema a proprio scopo.

[in] dwExceptionFlags

Flag di eccezione. Può essere zero per indicare un'eccezione continuabile o EXCEPTION_NONCONTINUABLE per indicare un'eccezione non contigua. Qualsiasi tentativo di continuare l'esecuzione dopo un'eccezione non contigua causa l'eccezione EXCEPTION_NONCONTINUABLE_EXCEPTION.

[in] nNumberOfArguments

Numero di argomenti nella matrice lpArguments . Questo valore non deve superare EXCEPTION_MAXIMUM_PARAMETERS. Questo parametro viene ignorato se lpArguments è NULL.

[in] lpArguments

Matrice di argomenti. Questo parametro può essere NULL. Questi argomenti possono contenere tutti i dati definiti dall'applicazione che devono essere passati all'espressione di filtro del gestore eccezioni.

Valore restituito

Questa funzione non restituisce un valore.

Commenti

La funzione RaiseException consente a un processo di usare la gestione delle eccezioni strutturata per gestire eccezioni private, generate dal software e definite dall'applicazione.

La generazione di un'eccezione causa l'esecuzione del dispatcher di eccezioni nella ricerca seguente di un gestore eccezioni:

  1. Il sistema tenta prima di tutto di inviare una notifica al debugger del processo, se presente.
  2. Se il processo non viene sottoposto a debug o se il debugger associato non gestisce l'eccezione, il sistema tenta di individuare un gestore eccezioni basato su frame eseguendo una ricerca negli stack frame del thread in cui si è verificata l'eccezione. Il sistema cerca prima di tutto lo stack frame corrente, quindi procede all'indietro attraverso i frame dello stack precedenti.
  3. Se non è possibile trovare alcun gestore basato su frame o nessun gestore basato su frame gestisce l'eccezione, il sistema esegue un secondo tentativo di notificare al debugger del processo.
  4. Se il processo non viene sottoposto a debug o se il debugger associato non gestisce l'eccezione, il sistema fornisce la gestione predefinita in base al tipo di eccezione. Per la maggior parte delle eccezioni, l'azione predefinita consiste nel chiamare la funzione ExitProcess .

I valori specificati nei parametri dwExceptionCode, dwExceptionFlags, nNumberOfArguments e lpArguments possono essere recuperati nell'espressione di filtro di un gestore eccezioni basato su frame chiamando la funzione GetExceptionInformation . Un debugger può recuperare questi valori chiamando la funzione WaitForDebugEvent .

Esempio

Per un esempio, vedere Uso di un gestore eccezioni.

Requisiti

   
Client minimo supportato Windows XP [app desktop | App UWP]
Server minimo supportato Windows Server 2003 [app desktop | App UWP]
Piattaforma di destinazione Windows
Intestazione errhandlingapi.h (include Windows.h)
Libreria Kernel32.lib
DLL Kernel32.dll

Vedere anche

ExitProcess

GetExceptionCode

GetExceptionInformation

Funzioni di gestione delle eccezioni strutturate

Cenni preliminari sulla gestione delle eccezioni strutturate

WaitForDebugEvent

API Vertdll disponibili nelle enclave VBS