In Java, un Error è una sottoclasse della classe Throwable che rappresenta problemi gravi a livello di sistema o ambiente di esecuzione, tipicamente non recuperabili dall’applicazione. Gli oggetti di tipo Error vengono lanciati dalla Java Virtual Machine (JVM) quando si verificano condizioni critiche o anomale che rendono impossibile proseguire l’esecuzione del programma in modo affidabile.

Package: java.lang


CARATTERISTICHE PRINCIPALI

  • Derivano da Throwable ma non sono eccezioni:
  • Non vanno catturati con try-catch: tecnicamente è possibile farlo, ma è sconsigliato, perché nasconderebbe problemi gravi invece di farli emergere.
  • Non vanno dichiarati con throws: non è necessario (né utile) dichiarare che un metodo può lanciare un Error.
  • Sono in genere irrecuperabili: l’applicazione non dovrebbe tentare di gestirli, ma piuttosto prevenirli.

ESEMPI COMUNI DI Error

Tipo di ErrorDescrizione
OutOfMemoryErrorLa JVM ha esaurito la memoria heap
StackOverflowErrorStack troppo profondo (es. ricorsione infinita)
NoClassDefFoundErrorLa JVM non riesce a trovare una classe al momento dell’esecuzione
InternalErrorErrore interno alla JVM
VirtualMachineErrorErrore critico legato alla macchina virtuale

Esempio:

public class Test {
    public static void main(String[] args) {
        causeStackOverflow();
    }
 
    public static void causeStackOverflow() {
        causeStackOverflow(); // Ricorsione infinita
    }
}

Questo codice produce un StackOverflowError, che non andrebbe catturato, ma evitato correggendo il codice.