Click Here to Download ImplementCustomException.zip
You can also called that create user defined exception class in asp.net.
There is a situations where you need to create and handle a custom exception for handling runtime’s exception for application-specific exceptions.
In this example we provide both C#.Net Example and VB.Net Example.
Let's look how this mechanism works.
For that we need to create a serializable class that extends the System.Exception class, and ass some constructors and properties to manipulate the data members.
You can throw custom exception class object exception in Try block and it will handle in catch block. Mark your custom exception class as sealed if you do not wish other exception classes to extend it. You need to Implement three public constructors with specific signature and they call base class constructor.
You also need to make custom exception class serializable so that the runtime can marshal instances of your exception. If your exception class declares custom data members, so you must override the ISerializable. GetObjectData method of the Exception class as well as implement a deserialization constructor with appropriate signature. If your exception class is sealed then mark the deserialization constructor as private, otherwise, mark it as protected. The GetObjectData method and deserialization constructor must call the equivalent base class method to allow the base class to serialize and deserialize its data correctly.
Here is example for this.
In this example we take one custom "CustomException" class and raise errors from try block and handle this error in Catch block. You can also make your own data members and constructors in "CustomException" class.
C# Examples :
VB.Net Examples :
Output :
You can also called that create user defined exception class in asp.net.
There is a situations where you need to create and handle a custom exception for handling runtime’s exception for application-specific exceptions.
In this example we provide both C#.Net Example and VB.Net Example.
Let's look how this mechanism works.
For that we need to create a serializable class that extends the System.Exception class, and ass some constructors and properties to manipulate the data members.
You can throw custom exception class object exception in Try block and it will handle in catch block. Mark your custom exception class as sealed if you do not wish other exception classes to extend it. You need to Implement three public constructors with specific signature and they call base class constructor.
You also need to make custom exception class serializable so that the runtime can marshal instances of your exception. If your exception class declares custom data members, so you must override the ISerializable. GetObjectData method of the Exception class as well as implement a deserialization constructor with appropriate signature. If your exception class is sealed then mark the deserialization constructor as private, otherwise, mark it as protected. The GetObjectData method and deserialization constructor must call the equivalent base class method to allow the base class to serialize and deserialize its data correctly.
Here is example for this.
In this example we take one custom "CustomException" class and raise errors from try block and handle this error in Catch block. You can also make your own data members and constructors in "CustomException" class.
C# Examples :
using System.Runtime.Serialization; public sealed class CustomException : Exception { // Custom data members for CustomException. private string stringInfo; private bool booleanInfo; // Three standard constructors and simply call the base class. public CustomException() : base() { } public CustomException(string strMessage) : base(strMessage) { } public CustomException(string strMessage, Exception inner): base(strMessage, inner) { } private CustomException(SerializationInfo info,StreamingContext context): base(info, context) { // Deserialize each custom data member. stringInfo = info.GetString("StringInfo"); booleanInfo = info.GetBoolean("BooleanInfo"); } // Additional constructors to allow code to set the custom data members. public CustomException(string message, string stringInfo,bool booleanInfo): this(message) { this.stringInfo = stringInfo; this.booleanInfo = booleanInfo; } public CustomException(string message, Exception inner,string stringInfo, bool booleanInfo): this(message, inner) { this.stringInfo = stringInfo; this.booleanInfo = booleanInfo; } // Read-only properties that provide access to the custom data members. public string StringInfo { get { return stringInfo; } } public bool BooleanInfo { get { return booleanInfo; } } public override void GetObjectData(SerializationInfo info,StreamingContext context) { // Serialize the custom data members. info.AddValue("StringInfo", stringInfo); info.AddValue("BooleanInfo", booleanInfo); // Call the base class to serialize its members. base.GetObjectData(info, context); } public override string Message { get { string message = base.Message; if (stringInfo != null) { message += "<br/> String Info : " +stringInfo + "<br/> Boolean Info : " + booleanInfo; } return message; } } } protected void Page_Load(object sender, EventArgs e) { try { // Create and throw a CustomException object. throw new CustomException("Some Custom Exception Message", "Some String Info", true); } catch (CustomException ex) { Response.Write(ex.Message); } }
VB.Net Examples :
Imports System.Runtime.Serialization Public NotInheritable Class CustomException Inherits Exception ' Custom data members for CustomException. Private m_stringInfo As String Private m_booleanInfo As Boolean ' Three standard constructors and simply call the base class. Public Sub New() MyBase.New() End Sub Public Sub New(ByVal strMessage As String) MyBase.New(strMessage) End Sub Public Sub New(ByVal strMessage As String, ByVal inner As Exception) MyBase.New(strMessage, inner) End Sub Private Sub New(ByVal info As SerializationInfo, ByVal context As StreamingContext) MyBase.New(info, context) ' Deserialize each custom data member. m_stringInfo = info.GetString("StringInfo") m_booleanInfo = info.GetBoolean("BooleanInfo") End Sub ' Additional constructors to allow code to set the custom data members. Public Sub New(ByVal message As String, ByVal stringInfo As String, ByVal booleanInfo As Boolean) Me.New(message) Me.m_stringInfo = stringInfo Me.m_booleanInfo = booleanInfo End Sub Public Sub New(ByVal message As String, ByVal inner As Exception, ByVal stringInfo As String, ByVal booleanInfo As Boolean) Me.New(message, inner) Me.m_stringInfo = stringInfo Me.m_booleanInfo = booleanInfo End Sub ' Read-only properties that provide access to the custom data members. Public ReadOnly Property StringInfo() As String Get Return m_stringInfo End Get End Property Public ReadOnly Property BooleanInfo() As Boolean Get Return m_booleanInfo End Get End Property Public Overrides Sub GetObjectData(ByVal info As SerializationInfo, ByVal context As StreamingContext) ' Serialize the custom data members. info.AddValue("StringInfo", m_stringInfo) info.AddValue("BooleanInfo", m_booleanInfo) ' Call the base class to serialize its members. MyBase.GetObjectData(info, context) End Sub Public Overrides ReadOnly Property Message() As String Get Dim message__1 As String = MyBase.Message If m_stringInfo IsNot Nothing Then message__1 += "<br/>String Info : " & m_stringInfo & " <br/> Boolean Info : " & m_booleanInfo End If Return message__1 End Get End Property End Class Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Try ' Create and throw a CustomException object. Throw New CustomException("Some Custom Exception Message", "Some String Info", True) Catch ex As CustomException Response.Write(ex.Message) End Try End Sub
Output :
This article is very useful for Beginning .Net.
Note : Give
Us your valuable feedback in comments. Give your suggestions in this
article so we can update our articles accordingly that.
No comments:
Post a Comment