Nel mondo di oggi, Eccezione (informatica) ha acquisito un'inevitabile rilevanza in numerosi settori. Il suo impatto si estende dalla sfera personale a quella professionale, attraverso la sfera culturale, sociale e politica. L'interesse per Eccezione (informatica) è aumentato negli ultimi anni, diventando argomento di dibattito e riflessione in vari forum e media. Sia gli esperti che i comuni cittadini sono sempre più interessati a comprendere e analizzare le implicazioni e le sfide che Eccezione (informatica) pone nella società contemporanea. In questo senso, questo articolo si propone di offrire una visione panoramica e aggiornata di Eccezione (informatica), affrontando le sue molteplici sfaccettature e proponendo un approccio critico e riflessivo a questo fenomeno oggi onnipresente.
In informatica, il termine eccezione è usato per descrivere l'occorrenza di diversi tipi di condizioni o eventi che alterano il normale flusso di controllo ed esecuzione di un microprocessore programmabile o di un programma. Possono essere considerati simili a degli errori a run-time da parte di un programma eseguito dal processore.
Tradizionalmente, il termine si applica a condizioni individuate dall'hardware: per esempio, una divisione per zero causa un'eccezione hardware che interrompe l'esecuzione del programma. Generalizzando, si può affermare che un'eccezione è il risultato di una qualunque causa che impedisca al processore di eseguire un'istruzione.
Le eccezioni si possono dividere nei seguenti tipi:
Le eccezioni possono essere quindi inattese, previste o addirittura volute dal programmatore. Al verificarsi di un'eccezione, il processore sospende l'esecuzione del programma corrente e passa a una routine predefinita del sistema operativo. Tale routine può avere compiti speciali (ad esempio, un interrupt è spesso usato per ricevere dati dalle periferiche), o può anche terminare il programma nel caso non possa fare nulla per risolvere il problema, come nel caso classico della divisione per zero.
Per quanto riguarda il software, termine eccezione è stato riutilizzato in molti linguaggi di programmazione ad alto livello, come per esempio Ada, C++, Java e Python.
In questo contesto, un'eccezione è un meccanismo per interrompere l'esecuzione di un sottoprogramma in caso di errore di run-time e propagare l'errore ad un livello più alto del programma stesso. Figurativamente, l'eccezione viene lanciata in basso, e catturata più in alto.
Ciò permette di scrivere il codice sorgente assumendo che non vi siano malfunzionamenti, demandando a routine specializzate il compito di risolvere eventuali problemi incontrati durante il percorso. In contrasto con l'approccio di linguaggi meno evoluti come il C standard, dove in pratica ogni condizione di errore deve essere controllata "sul posto", si ottiene un codice più chiaro e una gestione più logica degli errori. Nel caso di linguaggio ad oggetti, le eccezioni sono degli oggetti come tutti gli altri ed è possibile quindi usarle per memorizzare una notevole mole di informazioni riguardo all'errore occorso.
Normalmente il programmatore deve prevedere esplicitamente quali condizioni di errore possono generare un'eccezione e come risolverle. Trascurare di catturare un'eccezione fa sì che essa venga propagata al livello più alto possibile, cioè al sistema operativo, che tipicamente termina il programma.