Gestione delle eccezioni (gestione degli errori)
Le eccezioni possono essere avviate da hardware o software e possono verificarsi in modalità kernel e codice in modalità utente. La gestione strutturata delle eccezioni fornisce un unico meccanismo per la gestione delle eccezioni in modalità kernel e in modalità utente.
L'esecuzione di determinate sequenze di istruzioni può comportare eccezioni avviate dall'hardware. Ad esempio, una violazione di accesso viene generata dall'hardware quando un processo tenta di leggere o scrivere in un indirizzo virtuale a cui non ha l'accesso appropriato.
Gli eventi che richiedono la gestione delle eccezioni possono verificarsi anche durante l'esecuzione di una routine software, ad esempio quando viene specificato un valore di parametro non valido. In questo caso, un thread può avviare un'eccezione in modo esplicito chiamando la funzione RaiseException. Questa funzione consente al thread chiamante di specificare informazioni che descrivono l'eccezione.
Un'eccezione può essere continuabile o non contigua. Un'eccezione non contigua si verifica quando l'evento non è continuabile nell'hardware o se la continuazione non ha senso. Un'eccezione non contigua non termina l'applicazione. Pertanto, un'applicazione può essere in grado di intercettare l'eccezione ed eseguire. Tuttavia, un'eccezione non contigua si verifica in genere a causa di uno stack danneggiato o di un altro problema grave, rendendo difficile il ripristino dall'eccezione.