Around and About .NET World

Il blog di Marco Minerva
posts - 1671, comments - 2232, trackbacks - 2135

My Links

News

Contattami su Live Messenger:


MCTS: Windows, Web, Distributed Applications & SQL Server

MCPD: Enterprise Applications

Tag Cloud

Archives

Post Categories

Links

System.ApplicationException

Oggi, mentre stavo per creare una Custom Exception in .NET, mi sono ricordato una cosa che avevo studiato nell'esame di certificazione 70-536, ovvero che la classe System.ApplicationException non dovrebbe essere utilizzata. Ma perché? Qual è il motivo che ha spinto Microsoft stessa a sostenere questa cosa? La risposta si trova facilmente con una ricerca su Google:

JEFFREY RICHTER: System.ApplicationException is a class that should not be part of the .NET Framework. The original idea was that classes derived from SystemException would indicate exceptions thrown from the CLR (or system) itself, whereas non-CLR exceptions would be derived from ApplicationException. However, a lot of exception classes didn’t follow this pattern. For example, TargetInvocationException (which is thrown by the CLR) is derived from ApplicationException. So, the ApplicationException class lost all meaning. The reason to derive from this base class is to allow some code higher up the call stack to catch the base class. It was no longer possible to catch all application exceptions.

In pratica, poiché parecchie eccezioni di .NET derivano da ApplicationException (cosa che non dovrebbero fare), questa classe base non può essere utilizzata per capire se l'errore è causato da un metodo di .NET oppure da una Custom Exception… Quindi in pratica ha perso il suo scopo. Ovviamente questa è solo una best-practice… La classe ApplicationException rimarrà parte integrante di .NET, quindi le eccezioni che ereditano da essa non devono essere modificate Smile.

Print | posted on Monday, March 2, 2009 5:28 PM | Filed Under [ C# VB .NET .NET Compact Framework ADO .NET & SQL ASP .NET .NET 3.0 .NET Micro Framework Orcas & .NET 3.5 Certificazioni ]

Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET