Gestione delle eccezioni
Da Wikipedia, l'enciclopedia libera.
La gestione delle eccezioni è un costrutto dei linguaggi di programmazione o un meccanismo dell'hardware del computer progettato per gestire errori a runtime o altri problemi (eccezioni) che avvengono durante l'esecuzione di un programma per computer.
In generale, lo stato attuale verrà salvato in una posizione predefinita e l'esecuzione passerà a un gestore predefinito handler. A seconda della situazione, il gestore può poi riprendere l'esecuzione alla posizione originale, usando l'informazione salvata per ripristinare lo stato originale. Un esempio di eccezione da cui solitamente si riprende l'esecuzione è il page fault, mentre una che solitamente non può essere risolta trasparentemente è la divisione per zero.
Dal punto di vista dell'elaborazione, gli interrupt hardware sono simili a eccezioni recuperabili, eccetto che solitamente non sono correlate con il flusso attuale del programma.
[modifica] Gli scopi delle eccezioni
La gestione delle eccezioni è rivolta a facilitare l'uso di meccanismi ragionevoli per gestire situazioni erronee o eccezionali che sorgono nei programmi. La gestione delle eccezioni può essere usata per passare informazioni sulle situazioni d'errore che avvengono all'interno di codice di libreria ai suoi utenti, e rispondere selettivamente a quegli errori.
Un possibile ruolo della gestione delle eccezioni è di permettere al programma di continuare la sua normale operatività e prevenire errori interni (crash), che comportano la visualizzazione di messaggi d'errore di difficile comprensione per l'utente. In molti casi, è sufficiente arrestare il programma e produrre una resoconto dell'errore; la differenza rispetto a sistemi che non fanno uso di eccezioni per segnalare esecuzioni anomale del programma sta nel fatto che con un'appropriata gestione delle eccezioni la condizione erronea può essere localizzata con precisione, semplificando il debugging.
La gestione delle eccezioni rende obsoleta la tecnica di gestione dei segnali presente in alcuni linguaggi.