Tipi di eccezioni e Gerarchia in Java

Tutte le eccezioni Java derivano da una radice comune costituita dalla classe Throwable.

Al livello successivo abbiamo i due tipi di eccezioni che seguono:

  • Error, ossia situazioni anomale non recuperabili che, per la loro gravità, richiedono la terminazione del programma.
    Esse sono eventi particolarmente critici, che conducono ad una situazione di instabilità del programma in esecuzione, tale da pregiudicare l'esito di ogni altra azione del programma stesso e, quindi, da costituire un rischio di corruzione e perdita dei dati utilizzati dal programma (es. file, archivi).
  • Exception, ovvero anomalie non critiche, che possono essere intercettate e gestite dal programmatore, attraverso appositi costrutti del linguaggio di programmazione, in modo da permettere al programma di continuare la sua esecuzione in totale sicurezza.

All'interno delle eccezioni recuperabili (Exception) è possibile fare una ulteriore suddivisione in:

  • eccezioni checked, ossia eccezioni che il programmatore non può ignorare, ma è obbligato ad intercettare e gestire.
    Queste eccezioni sono costituite, in Java, da tutte le classi che derivano (specializzano) dalla classe Exception, a meno della classe RuntimeException.
  • eccezioni unchecked, ovvero eccezioni che il programmatore ha la facoltà di intercettare e gestire, ma non è obbligato a farlo.
    Queste eccezioni sono costituite, in Java, da tutte le classi che derivano dalla classe RuntimeException, quest'ultima inclusa.

Una rappresentazione grafica della gerarchia delle eccezioni in Java, unitamente ai concetti relativi alle tipologie di eccezioni sopra esposti, è fornita dall'immagine che segue:

Gerarchia delle eccezioni in Java

Nota:
L'immagine non elenca, ovviamente, la totalità delle tipologie di eccezioni esistenti in Java, ma un sottoinsieme significativo della gerarchia, per la comprensione delle differenze tra eccezioni recuperabili e non recuperabili ed, all'interno di queste ultime, tra eccezioni checked e unchecked.