Gestione delle eccezioni in Java: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
fix wl
SuperBot (discussione | contributi)
orfanizzazione disambigua using AWB
Riga 1:
{{F|linguaggi di programmazione|febbraio 2013|Voce ampia che manca completamente di Note, Bibliografia, Collegamenti esterni}}
{{torna a|Java (linguaggio)}}
Nel [[linguaggio di programmazione]] ''[[Programmazione orientata agli oggetti|object-oriented]]'' [[Java (linguaggio)|Java]], il sistema di '''gestione delle eccezioni''' (o '''exception handling''') è costituito da un insieme di costrutti e regole [[sintassi (informatica)|sintattiche]] e [[semantica (informatica)|semantiche]] introdotte allo scopo di rendere più semplice, chiara e sicura la gestione di eventuali ''situazioni anomale'', dette [[eccezione (informatica)|eccezioni]], che si possono verificare durante l'[[esecuzione (informatica)|esecuzione]] di un [[Programma (informatica)|programma]].
 
L'''exception handling'' di Java deriva direttamente (anche da un punto di vista sintattico) da quello del [[C++|linguaggio C++]]. Tuttavia, il meccanismo di Java deve considerarsi forse più oneroso, ma certamente più sicuro, grazie alla cosiddetta regola dello ''handle or declare'' (gestisci o dichiara), che in sostanza ''obbliga'' il [[programmatore]] a prevedere esplicite contromisure ''per ogni'' situazione anomala (prevedibile).
Riga 169:
Se le eccezioni sono descritte da classi che implementano ''Throwable'', è possibile che diverse classi-eccezione siano legate da relazioni di [[ereditarietà (informatica)|ereditarietà]]. In accordo con i principi generali del paradigma orientato agli oggetti, si avranno relazioni del genere fra classi che rappresentano rispettivamente tipi di eccezioni generali ([[Superclasse (informatica)|superclasse]]) e casi particolari ([[Sottoclasse (informatica)|sottoclassi]]). Per esempio, la classe ''FileInesistente'' e la classe ''FileDanneggiato'' potrebbero essere sottoclassi di una classe ''ProblemaAccessoAlFile'' (questa classe potrebbe per esempio definire il metodo ''getNomeFile'' usato negli esempi precedenti).
 
Il [[polimorfismo (informatica)|polimorfismo]] (legato alle relazioni di ereditarietà) gioca un ruolo importante nella gestione delle eccezioni in Java. Per esempio, una clausola ''catch'' il cui "parametro" sia dichiarato di tipo ''ProblemaAccessoAlFile'' potrebbe catturare tanto eccezioni di tipo ''FileInesistente'' quanto eccezioni di tipo ''FileDanneggiato'' (in analogia con l'applicazione del polimorfismo al passaggio parametri verso metodi e [[costruttoreCostruttore (informatica)|costruttori]]). Su considerazioni generali sul polimorfismo e il suo corretto uso, si veda la [[polimorfismo (informatica)|voce corrispondente]]. Nel caso estremo, un blocco ''catch'' con parametro di tipo ''Throwable'', per definizione, può catturare eccezioni di ''qualsiasi tipo''.
 
Per motivi analoghi, se un metodo dichiara di sollevare eccezioni di una certa classe ''C'', questo è assolutamente compatibile con l'eventualità che, sempre o in alcuni casi, tale metodo sollevi in effetti eccezioni di ''sottoclassi'' di ''C''.