In pl/sql tutti gli errori sono gestiti come eccezioni; al verificarsi di un errore l’esecuzione viene interrotta e il controllo passa alla sezione exception, di gestione delle eccezioni, del blocco in cui si e’ verificata l’eccezione. Quando si verifica un’eccezione non e’ piu’ possibile tornare al punto in cui e’ stato generato l’errore.
Questa architettura permette di centralizzare la gestione degli errori e quindi uno stesso errore, che puo’ verificarsi in punti differenti del codice, viene gestito in un unico punto evitando cosi’ al programmatore di andare a ricercare tutti i casi in cui l’errore potrebbe verificarsi e gestirlo ogni volta. In questo modo diminuisce drasticamente la quantita’ di codice da scrivere per gestire i malfunzionamenti, riducendo la probabilita’ di introduzione di ulteriori errori e facilitando altresi’ la gestione di nuovi errori.
La sintassi:
EXCEPTION
WHEN nome_eccezione1 [ OR nome_eccezione2 … ]
THEN
istruzioni
…..
WHEN OTHERS
THEN
istruzioni
END;
Se si verifica un’eccezione fra quelle indicate nella clausola WHEN vengono eseguite le istruzioni corrispondenti indicate dalla clausola THEN.
La clausola WHEN OTHERS (opzionale) gestisce qualsiasi altra applicazione no direttamente gestita dalle clausole precedenti.
Un’eccezione non gestita in un blocco viene passata all’eventuale blocco che lo contiene e alla fine, se non e’ stato gestito, all’utente.