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:
- Il sistema tenta prima di tutto di inviare una notifica al debugger del processo, se presente.
- 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.
- 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.
- 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
Funzioni di gestione delle eccezioni strutturate
Cenni preliminari sulla gestione delle eccezioni strutturate