Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Common Language Runtime consente la maggior parte delle eccezioni non gestite nei thread per procedere naturalmente. Nella maggior parte dei casi, ciò significa che l'eccezione non gestita causa l'interruzione dell'applicazione. Tuttavia, Common Language Runtime fornisce un backstop per determinate eccezioni non gestite usate per il controllo del flusso del programma:
Viene ThreadAbortException lanciato in un thread poiché Abort è stato invocato. Questo vale solo per le app .NET Framework.
Un'eccezione AppDomainUnloadedException viene generata in un thread perché il dominio dell'applicazione in cui il thread viene eseguito sta per essere unloadato.
Il Common Language Runtime o un processo host termina il thread generando un'eccezione interna.
Se una di queste eccezioni non viene gestita nei thread creati da Common Language Runtime, l'eccezione termina il thread, ma Common Language Runtime non consente l'ulteriore esecuzione dell'eccezione.
Se queste eccezioni non vengono gestite nel thread principale, o in thread che sono entrati nel runtime da codice non gestito, vengono normalmente elaborate, risultando nell'interruzione dell'applicazione.
Annotazioni
È possibile che il runtime generi un'eccezione non gestita prima che qualsiasi codice gestito abbia avuto la possibilità di installare un gestore eccezioni. Anche se il codice gestito non ha avuto la possibilità di gestire tale eccezione, l'eccezione può procedere naturalmente.
Esporre problemi di threading durante lo sviluppo
Quando i thread possono fallire silenziosamente, senza terminare l'applicazione, problemi seri di programmazione possono passare inosservati. Si tratta di un problema particolare per i servizi e altre applicazioni eseguite per periodi prolungati. Man mano che i thread hanno esito negativo, lo stato del programma diventa gradualmente danneggiato. Le prestazioni dell'applicazione possono peggiorare o l'applicazione potrebbe non rispondere.
Consentire l'esecuzione naturale di eccezioni non gestite nei thread, fino a quando il sistema operativo non termina il programma, espone tali problemi durante lo sviluppo e il test. Le segnalazioni di errori sulle terminazioni del programma supportano il debug.
Sovrascrittura dell'host
Un host non gestito può usare l'interfaccia ICLRPolicyManager nell'API di hosting per eseguire l'override dei criteri di eccezione non gestiti predefiniti di Common Language Runtime. La funzione ICLRPolicyManager::SetUnhandledExceptionPolicy viene usata per impostare i criteri per le eccezioni non gestite.