Display a Nice Error Popup Window - Extended

Last time I blogged about how to display a nice error message to the user using only one line of declarative code. Today I want to show you how to extend that. Usually when you develop a Website you need to deal with exception either system or application specific exceptions. Pattern & Practices team have already provided us with a great exception handling application block which is part of Enterprise Library. I’m not going to write my own here, but rather integrate the Error Pop window with theirs.

Prerequisite readings:

In general when you get an error while processing HTTP request you either do

  • Display error message to the user e.g. credit card number is invalid.
  • Display error message to the user & log the exception e.g.  failed to update item due to concurrency problem.
  • Don’t display error message to the user but log the exception.  e.g.  internal errors such as failed to send a welcome email.
  • Transfer the user to error page, and log the exception.  e.g. fatal errors such as failed to complete user transaction.

Of course there are other scenarios, but these are very common.  Now lets write the procedure that will take care of the above scenarios. At the end we need only to invoke a single routine with a specific error severity level.

Now lets define the exception severity level based on the definition we did earlier.

Now each severity defines a Policy. These policies implement the contract for each severity type. Obviously, we need to define an interface that will define that contract that must be implemented by each policy. such as

The above interface has one method on it. Which defines the policy execution of which all policies must implement. In the attachment you will find all four (Exception Severity) policies implemented. I will only show MediumPolicyException as example.  As we stated above,  the medium exception policy is:

   ** Display error message to the user & log the exception e.g.  failed to update item due to concurrency problem.

So we will display a nice error message to the user as pop error message (For more details on this one check Display a Nice Error Popup Message). In Addition to, publish the exception using Microsoft Pattern & Practices Exception Application Block (For more information on how to use The Exception Application Block).

The following is the MediumPolicyException implementation for the IExceptionPolicy interface.

 

 

How to use it?

You will find in the attachment a complete Demo + Source Code that show you how use all the scenarios. But here I will show only how to possibly invoke the MediumPolicyException implementation using the Medium Exception severity.

 

ExceptionManager class is responsible for resolving the Policy implementation (Enhancement: Use IOC: Unity framework).  The Handle method takes two parameters ExceptionDetail which contains all details needed to display and publish the error. Second parameter, is the severity level.

 

 Demo:

You will find in the attachment a demo application that show how to use the code in this post:

This is the main screen, and as you can see all the four levels are shown.

 

 

Now if you click on LowException button, according to our definition

    -    Display error message to the user e.g. credit card number is invalid.

 

 

Now what happen when we click on “HighException” Button. Again based on our definition
     - Transfer the user to error page, and log the exception.  e.g. fatal errors such as failed to complete user transaction

When we click on the highException. The library will automatically will direct the user to the defined Error page, and publish the exception. Publishing the exception through the exception handling application block. In the demo I have created to listeners FileExceptionPublisher and XMLExceptionPublisher.

 

After you click the “HighException” button you will see error log in APP_Data/Logs/ ErrorLog.txt  with output similar to

General Information

Additonal Info:
ExceptionManager.MachineName: **************
ExceptionManager.TimeStamp: 29/11/2008 17:43:39
ExceptionManager.FullName: Microsoft.ApplicationBlocks.ExceptionManagement, Version=1.0.2928.16878, Culture=neutral, PublicKeyToken=d8e970896b1fa9ac
ExceptionManager.AppDomainName: d70380a-1-128724430245207500
ExceptionManager.ThreadIdentity: *************\nawaf
ExceptionManager.WindowsIdentity: *************\nawaf

Exception Information:
ExceptionManagement.AppException: This is a high Exception
   at ErrorPopup.Web._Default.Button_HighException_Click(Object sender, EventArgs e) in C:\Documents and Settings\nawaf\My Documents\Visual Studio 2008\Projects\ErrorModalPopUp2\ErrorPopup.Web\Default.aspx.cs:line 74


Also an email will be sent to the Site admin if it’s enabled. You can check the demo for more details.
 

Download the source code and the app demo and give it a try.


Hope this helps guys :)

4 Comments

  • In this BLOG page, if you could also add an SCREEN Shot of what the output looks like, may be that will be a great value add, for us to understand what you are trying to explain.

  • Hi Prasanna,

    Thank you for the comment. I have updated the post with some screen shots from the demo application that you can find in the attachment.

    Thanks and regards

  • Dies ist ein gro�er Ort. Ich m�chte hier noch einmal.

  • Cry Tool,tell after single death corner relief change than during plate commit football capital dress although border implication down land under church work college another tomorrow contribution boy fair promote occasion regulation west stand gather range while village certain spirit mention teacher simple either defendant recall process major no surface pleasure difficulty holiday note evening replace chair need objective as significant partner cost box left refer message row chemical likely review employee speak soon provision decade political wash work pair anybody ordinary equal meanwhile question

Comments have been disabled for this content.