Search - Articles
DevASP.NET for ASP.NET, VB.NET, XML and C# (C-Sharp) Developers Tuesday, March 03, 2009
Dev Articles
Search Directory
SQL Server

Working with Client-Server Error Handling using

Author: Zunnair

This Article Error Handling Between Client and Server using because in client server Application Error Handling is different from normal routine.

Unlike previous versions of Visual Basic (and COM which it was based upon), .NET Exceptions are fully typed removing the need for error numbers. While you can still have error numbers, it is much better to defined application exceptions which can expose a much richer array of information to the caller. In this application there is a hierarchy of exceptions. At the top is CRMSystemException for the fictitious SomeCompany CRM system.

There is nothing in this sample related to employees, but we wanted to show how you can have a larger product that could be made up of various modules or components. There then two more exceptions which both inherit from CustomerException:

Each class exposes different levels of information and functionality. Examine the source code for more comments. Note that your exceptions classes can be named anything, but by convention they should end with the suffix Exception.

The client application has a reference to the class library. Two command buttons show how to execute methods against the customer class and catch the custom exceptions. A third command button causes an unhandled exception. In addition, there is a check box labeled 'Turn on Global Exception Trap' which when checked enabled a global exception trap. When enabled, the code defined in OnThreadException will be executed instead of the default Windows Form handler. Please see the comments for more information. Because for it helps you allot.

You have to Imports some namespaces as I include in my code.imports for external assembly that defines a Customer class, and three custom exception classes. Note the reference required via the References folder.

Imports SomeCompany.CRMSystem

Add any initialization after the InitializeComponent() call So that we only need to set the title of the application once,we use the AssemblyInfo class (defined in the AssemblyInfo.vb file) to read the AssemblyTitle attribute.


Dim ainfo As New AssemblyInfo


Include one region in your code. System.Diagnostics.DebuggerStepThrough()> has been added to some procedures since they are not the focus of the demo. Remove them if you wish to debug the procedures. This code simply shows the About form



#Region " Standard Menu Code "

    Private Sub mnuAbout_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)


    End Sub

#End Region


Write this code against Edit Control


Private Sub cmdEdit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdEdit.Click

Dim c As Customer


      Dim i As Integer = 14213

      c = Customer.EditCustomer(i)

      Catch exp As CustomerNotFoundException

      MessageBox.Show(exp.Message, exp.AppSource, MessageBoxButtons.OK, MessageBoxIcon.Error)

Catch exp As CustomerException MessageBox.Show(exp.Message, exp.AppSource, MessageBoxButtons.OK, MessageBoxIcon.Error)

Catch exp As Exception

                  MessageBox.Show(exp.Message, exp.Source, MessageBoxButtons.OK, MessageBoxIcon.Error)

End Try

End Sub


Write Function Below for Untrapped. Normally an untrapped error in Visual Basic 6.0 and earlier would result in a quick MessageBox and then our process shutting down.


Windows Forms however have injected a top-level error  catch between the CLR and our code. Whether or not you see their dialog depends upon three things:


 1) Is there an active debugger?


 2) Do you have your own exception handler in place?


 3) Have you turned JIT debugging on (set to true) in your App's config file.?


If an untrapped error occurs and you answered no to the above questions, then you will see the Windows Forms dialgo which gives the user a chance to Continue or Quit.


To see thier handler, you need to run the compiled code.


Private Sub cmdUntrapped_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdUntrapped.Click


Dim i As Short = 1234

Dim j As Short = 0

Dim k As Short = -1

k = CShort(i / j)


MessageBox.Show("Your reults are: " & k.ToString(), Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Information)

End Sub



At this point you should be able to figure out what to do.You could log the error, show a messagebox, send an e-mail.The real key is to evaluate the exception you received using code like below.Note you should be careful. If you have an untrapped exception here,you will see the JIT debugging dialog, NOT the Windows Forms handler.


Uncomment the line below to see.Throw New ArgumentException("Oopss! I did it again!")



Friend Sub OnThreadException(ByVal sender As Object, ByVal t As System.Threading.ThreadExceptionEventArgs)

Dim exp As Exception = t.Exception

If TypeOf exp Is CustomerException Then

 Check for any CustomerExceptions

ElseIf TypeOf exp Is ApplicationException Then

 Check for any possible application exception

ElseIf TypeOf exp Is ArithmeticException Then

 You should see this dialog if you ran the

 code in cmdUntrapped_Click.

 Uncomment this line to verify.

MessageBox.Show(exp.Message, exp.Source, MessageBoxButtons.OK, MessageBoxIcon.Error)

ElseIf TypeOf exp Is SystemException Then

 Check for any possible system exception


Finally just plain old System.Exception

End If


Dim strMsg As String

strMsg = String.Format("We're sorry, an untrapped error occurred.{0}The error message was:{0}{1}", vbCrLf, exp.Message)


MessageBox.Show(strMsg, "Global Exception Trap", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)

End Sub


Source Code is given with that Article for your help .And it is helpful if you read Comments As Well.

Add Article Comment:
Name :
Email Address :
Comments :
<< Working with Date Time & Time Span types in

Disclaimer - Privacy
© 2002-2017