How can I break on an unhandled exception in ASP.NET?

When debugging an application in Visual Studio, there are 2 options for breaking on exceptions. Break as soon as an exception is thrown, and breaking only when an exception isn’t caught. This works fine when developing desktop applications. However, when developing ASP.NET applications, all exceptions are eventually caught by the code in IIS. Is it possible to disable this behavior, so that the debugger breaks when my ASP.Net application code fails to catch an exception?


Just to be clear, I don’t want to break whenever an exception is thrown, as many times they are handled just fine by my code, and I don’t want to stop on every exception. I only want to stop on the exceptions that aren’t handled by my code.


This seems to not be an issue in Visual Studio 2008. In Visual Studio 2003, all exceptions were treated as user handled, because the ASP.NET runtime caught all the exceptions so as not to bring down the web server process. It seems that in Visual Studio 2008, this type of exception catching is not counted when checking for user-unhandled exceptions.


Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.

Method 1

Under Debug->Exceptions, check the ‘Thrown’ column of Common Language Runtime Exceptions (at a minimum). Check ‘Thrown’ for other Exceptions you’re interested in.

Now, if the debugger is attached (active debug or ‘Attach to Process’), your ASP.NET app will break on a CLR Exception (or any other Exception you’ve selected).
If you want to break only on unhandled Exceptions, under Debug->Exceptions, uncheck ‘Thrown’ on all Exception types and make sure ‘User-unhandled’ is checked for the Exceptions you’re interested in.

Exception Interface

Then, if the debugger is attached, your ASP.NET app will break on every User-unhandled Exception you’ve selected regardless of the fact the runtime will eventually catch the Exception. Sample:

Debugger breaking on User-unhandled exception

All methods was sourced from or, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

0 0 votes
Article Rating
Notify of

Inline Feedbacks
View all comments
Would love your thoughts, please comment.x