mercoledì, gennaio 17, 2007

Checked vs Unchecked Exception

Una delle principali differenze rispetto a Java che ho trovato lavorando in C#, è l'assenza di Checked Exceptions. Cioè in C# tutte le eccezioni sono unchecked.

Mentre altre differenze mi convincono oppure no, di questa non riesco ad avere una opinione precisa.
Sono (o ero?) abituato a considerare le Checked Exception una BUONA COSA, ma..

  • Ad esempio ho visto che per l'integrazione e il supporto di Hibernate in Spring, la classe HibernateTemplate una delle cose principali che fa è trappare tutte le checked exception di Hibernate e rilanciarle come unchecked.
  • Ho visto (e scritto anche) troppo codice Java con metodi che rilanciano 7,8,9 eccezioni diverse, che si propagano, si propagano, si propagano, fino al catch/finally del main...
  • Ho letto questo:
    http://www.artima.com/intv/handcuffs.html

    dove uno degli architetti di C# spiega i perché non ci siano checked exception in C#

Insomma, non riesco ad avere una opinione precisa:
per alcuni versi le checked exception mi sembrano utili e necessarie, per altri mi dico (forse anche a causa dell'abuso che ne fa il JDK) che se ne farebbe volentieri a meno.

Nessun commento: