3 out of 4 rated this helpful - Rate this topic

ApplicationException Class

The exception that is thrown when a non-fatal application error occurs.

System.Object
  System.Exception
    System.ApplicationException
      More...

Namespace:  System
Assembly:  mscorlib (in mscorlib.dll)
[SerializableAttribute]
[ComVisibleAttribute(true)]
public class ApplicationException : Exception

The ApplicationException type exposes the following members.

  Name Description
Public method Supported by the XNA Framework ApplicationException() Initializes a new instance of the ApplicationException class.
Public method Supported by the XNA Framework ApplicationException(String) Initializes a new instance of the ApplicationException class with a specified error message.
Protected method ApplicationException(SerializationInfo, StreamingContext) Initializes a new instance of the ApplicationException class with serialized data.
Public method Supported by the XNA Framework ApplicationException(String, Exception) Initializes a new instance of the ApplicationException class with a specified error message and a reference to the inner exception that is the cause of this exception.
Top
  Name Description
Public property Data Gets a collection of key/value pairs that provide additional user-defined information about the exception. (Inherited from Exception.)
Public property HelpLink Gets or sets a link to the help file associated with this exception. (Inherited from Exception.)
Protected property Supported by the XNA Framework HResult Gets or sets HRESULT, a coded numerical value that is assigned to a specific exception. (Inherited from Exception.)
Public property Supported by the XNA Framework InnerException Gets the Exception instance that caused the current exception. (Inherited from Exception.)
Public property Supported by the XNA Framework Message Gets a message that describes the current exception. (Inherited from Exception.)
Public property Source Gets or sets the name of the application or the object that causes the error. (Inherited from Exception.)
Public property Supported by the XNA Framework StackTrace Gets a string representation of the immediate frames on the call stack. (Inherited from Exception.)
Public property TargetSite Gets the method that throws the current exception. (Inherited from Exception.)
Top
  Name Description
Public method Supported by the XNA Framework Equals(Object) Determines whether the specified Object is equal to the current Object. (Inherited from Object.)
Protected method Supported by the XNA Framework Finalize Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.)
Public method Supported by the XNA Framework GetBaseException When overridden in a derived class, returns the Exception that is the root cause of one or more subsequent exceptions. (Inherited from Exception.)
Public method Supported by the XNA Framework GetHashCode Serves as a hash function for a particular type. (Inherited from Object.)
Public method GetObjectData When overridden in a derived class, sets the SerializationInfo with information about the exception. (Inherited from Exception.)
Public method Supported by the XNA Framework GetType Gets the runtime type of the current instance. (Inherited from Exception.)

In XNA Framework 3.0, this member is inherited from Object.GetType().
Protected method Supported by the XNA Framework MemberwiseClone Creates a shallow copy of the current Object. (Inherited from Object.)
Public method Supported by the XNA Framework ToString Creates and returns a string representation of the current exception. (Inherited from Exception.)
Top
  Name Description
Protected event SerializeObjectState Occurs when an exception is serialized to create an exception state object that contains serialized data about the exception. (Inherited from Exception.)
Top

User applications, not the common language runtime, throw custom exceptions derived from the ApplicationException class. The ApplicationException class differentiates between exceptions defined by applications versus exceptions defined by the system.

If you are designing an application that needs to create its own exceptions, you are advised to derive custom exceptions from the Exception class. It was originally thought that custom exceptions should derive from the ApplicationException class; however in practice this has not been found to add significant value. For more information, see Best Practices for Handling Exceptions.

ApplicationException uses the HRESULT COR_E_APPLICATION, which has the value 0x80131600.

For a list of initial property values for an instance of ApplicationException, see the ApplicationException constructors.

.NET Framework

Supported in: 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Did you find this helpful?
(1500 characters remaining)
Community Content Add
Annotations FAQ
I still don't get it

So it's "not recommended" entirely? The purpose I was giving to this class was that I used it only internally for flow control, when the exception conditions didn't fit another Framework Exception class, and I didn't need to attach any extended information or functionality, so I didn't bother to define a new class.


But I've just found out that some Framework types may throw it, for example some of System.Threading.Mutex's constructors. So now if I want to differentiate between an ApplicationException thrown by that, any other Exception thrown by any other Framework type, and an internal kind of Exception thrown by my code for internal flow control, I have to define the latter as a new class, even if inheriting Exception without any modification. I thought this was the whole point of ApplicationException.


The only solution is not to use it. But of course if Framework types use it, that means it has a purpose. I just don't know what it is.

Why not marked as [Oboslete]?
I am wondering why this class was not marked as obsolete. Prefer using Exception class? Or I am wrong?

--While this class is not recommended, it's not actually obsolete -- there's no danger that applications using it already will function incorrectly. (Django Wexler, CLR DG)