Click here to Skip to main content
15,885,537 members
Articles / General Programming / Exceptions

Getting Exact Location of Exception in C# Code

Rate me:
Please Sign up or sign in to vote.
4.60/5 (9 votes)
2 Feb 2014CPOL2 min read 45.4K   9   9
How to get exact location of exception in C# code

Introduction

This post is about locating the exact location of the Exception in the code. There is always a problem for the developer to locate the exact location from where Exception was raised, because of that, it is difficult for the developer what actually went wrong. Most of the time, problem occurs when there are too many libraries referenced, i.e., used in project.

To understand, let’s consider the below example: In the following example, the application is divided in three layers.

  1. Font end - Layer though which user interacts with application and displays data to end user of application.
  2. Business - Layer which has the business logic, code to call datalayer and the info classes which transport between font and data layer.
  3. Data - Layer which interacts with database and supplies data to business layer.

Front Layer Code

C#
class Program
    {
        //Program p = new Program();

        public int i = 10;
        public static void Main(string[] args)
        {
            try
            {
                (new BusinessEmployee()).GetEmployeeList();
            }
            catch (Exception ex)
            {
                global::System.Windows.Forms.MessageBox.Show(ex.Message);
            }
        }
    }

As you see in the above code Font layer is calling “GetEmployeeList” method to get list of all employee.

BusinessLayer Code

C#
public class BusinessEmployee
{
    private readonly DataEmployee dataEmployee;

    public BusinessEmployee()
    {
        dataEmployee = new DataEmployee();
    }

    //Business layer class for employee
    public  void GetEmployeeList()
    {
        dataEmployee.GetEmployeeList();
    }
}

In this layer, the Business class is calling DataLayer to get employee list from the database.

DataLayer Code

C#
public class DataEmployee
{
    //Data layer class for employee
    public  void GetEmployeeList()
    {
        throw new Exception("Not able to fetch employee");
    }
}

This layer returns employee list, but for the example, it's returning exception.

Now if you run the above code by putting it into the respected layer, then when exception is thrown by the actual code, debugger breaks execution in the front layer code. The below image shows the same thing.

So it becomes difficult for the developer what went wrong if there is actual complex code.

Solution

In Visual Studio, there is an option as given in the below image that allows to break debugging at the point, i.e., at the code from where exception is coming.

Once you clicked on menu option, it will open up dialog box where you can mark tick on “Common Language Runtime Exception” as in the below image and click ok.

Now if you run the same code, then the debugger will stop at the exact location from where exception is coming, you can also see the below image.

So breaking at exact location from where error is coming, you can find out which part is actually causing the problem and help to resolve the error easily.

Conclusion

Visual Studio option to locate exception is also very helpful when there are multiple threads doing operation and throws exception. Also locate exceptions dialog provides other option that are also helpful when you are using JavaScript, com component, etc. that you can try by yourself.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Software Developer (Senior)
India India

Microsoft C# MVP (12-13)



Hey, I am Pranay Rana, working as a Team Leadin MNC. Web development in Asp.Net with C# and MS sql server are the experience tools that I have had for the past 5.5 years now.

For me def. of programming is : Programming is something that you do once and that get used by multiple for many years

You can visit my blog


StackOverFlow - http://stackoverflow.com/users/314488/pranay
My CV :- http://careers.stackoverflow.com/pranayamr

Awards:



Comments and Discussions

 
GeneralMy vote of 4 Pin
Pratik Bhuva9-Feb-14 22:03
professionalPratik Bhuva9-Feb-14 22:03 
GeneralRe: My vote of 4 Pin
Pranay Rana9-Feb-14 23:18
professionalPranay Rana9-Feb-14 23:18 
GeneralMy vote of 5 Pin
JayantaChatterjee4-Feb-14 1:38
professionalJayantaChatterjee4-Feb-14 1:38 
GeneralRe: My vote of 5 Pin
Pranay Rana4-Feb-14 1:44
professionalPranay Rana4-Feb-14 1:44 
GeneralRe: My vote of 5 Pin
JayantaChatterjee4-Feb-14 1:46
professionalJayantaChatterjee4-Feb-14 1:46 
GeneralMy vote of 5 Pin
Mike Meinz29-Jan-14 7:03
Mike Meinz29-Jan-14 7:03 
GeneralRe: My vote of 5 Pin
Pranay Rana30-Jan-14 0:52
professionalPranay Rana30-Jan-14 0:52 
GeneralMy vote of 4 Pin
Klaus Luedenscheidt28-Jan-14 19:02
Klaus Luedenscheidt28-Jan-14 19:02 
GeneralRe: My vote of 4 Pin
Pranay Rana28-Jan-14 22:37
professionalPranay Rana28-Jan-14 22:37 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.