Crad's .NET Blog

L'UGIblog di Marco De Sanctis
posts - 190, comments - 457, trackbacks - 70

La strana storia di ApplicationException

Tra le varie best practice di .NET, una che ho sentito n-mila volte e ho metabolizzato senza (mea culpa) indagare ulteriormente è quella di ereditare ogni custom exception dalla classe ApplicationException piuttosto che direttamente da System.Exception.

Ok, riconosco l'errore di essere stato poco curioso, ma ieri sera, scoprendo qual è la vera realtà dei fatti, non ho potuto far a meno di sorriderci un po' su! Parola di Jeffrey Richter, l'intenzione originaria di Microsoft era tutt'altro che sbagliata: le eccezioni sollevate dall'applicazione dovevano ereditare tutte da System.ApplicationException, mentre quelle sollevate dal CLR in risposta ad errori di sistema dovevano appartenere alla gerarchia di System.SystemException, in modo da poterne distinguere "a monte" la natura.

La cosa bella è che, purtroppo, le classi stesse del Framework non seguono questa guideline: se da un lato FormatException deriva da SystemException, dall'altro WaitHandleCannotBeOpenedException ha come base class ApplicationException, mentre IsolatedStorageException deriva direttamente da System.Exception.

Morale: SystemException e ApplicationException son lì solo per retrocompatibilità, ma lo stesso buon Jeffrey consiglia di ereditare direttamente da Exception e buona notte al secchio

powered by IMHO 1.3

Print | posted on mercoledì 3 maggio 2006 04:33 | Filed Under [ .Net 2.0 ]

Powered by:
Powered By Subtext Powered By ASP.NET