.NET Offers a "First Chance" to Squelch Performance-killing Hidden Exceptions
Uncaught exceptions in your .NET applications can turn an otherwise high-performance application into a snail, especially those that are allowed to be "eaten" by subsequent code. Find out how to use very handy "First Chance" exception feature in the .NET debugger to root out nasty hidden exceptions.
by Robert Bogue
May 3, 2006
rocessing exceptions in any language is expensive. The process of capturing an exception and rolling it into a package that can be processed by code requires a stack walkbasically looking back through the history of what has happenedand that requires a lot of processing time to complete. In .NET software development we sometimes talk about boxing and unboxing of variables and how that can consume a great deal of time in a programand it can. However, the amount of time necessary to process an exception dwarfs the time necessary to box and unbox a variable. (If you want to know more about boxing and unboxing you can read about it in the article "Boxing and Unboxing of Value Types in C#" on CodeGuru.)
Despite the fact that exceptions are expensive to process they are positively a great thing for debugging applications and making software more reliable. The challenge is when exceptions are used incorrectly; specifically, when they are used to respond to normal conditions instead of exceptional conditions. Generally when this happens the layers of software above the layer generating the exception start "eating" the exceptionbecause nothing is wrong (more on eating exceptions in a moment)and manually return to normal program flow. This, however, leads to subtle performance issues that are difficult to find. Running a profiler on the code can show where performance is being impacted, however, there's a quicker and simpler way to find performance problems like theseor rule out exceptions as a potential cause of performance issues.
It's quick, easy and you get access to all the articles on DevX.
This registration/login is to allow you to read articles on devx.com. Already a member?
To become a member of DevX.com create your Member Profile by completing the form below. Membership is free!