This Wrox Blox will teach you how to unravel the mysteries of exception handling in ASP.NET. First, you’ll get a thorough introduction to structured exception handling in the .NET Framework, learn about the Exception class, the related C# language constructs, and how exceptions propagate up the call stack. Then, you’ll delve into a variety of practical topics such as: when, where, and how to properly throw, catch, and handle exceptions in your code; how to employ “defensive programming” techniques to avoid triggering the most common CLR exceptions; adopting exception handling “best practices,” handling exceptions from rich ASP.NET server controls, data-bound controls, data sources, and AJAX asynchronous postbacks; and processing unhandled exceptions at both the page and application levels.
The author also walks you through the building of a complete, reusable, and fully configurable ASP.NET exception processing framework that extends far beyond ASP.NET’s built-in error handling capabilities. You’ll learn how to collect information about the state of the application when the exception occurred; how to leverage various ASP.NET state-handling mechanisms such as Application, Context, Session, ASP.NET Cache, cookies, and query strings to store and pass error data; create a friendly, informative, and highly functional custom error UI; show friendly error messages to “normal” visitors, while showing detailed error reports only to site managers based on authentication, authorization, or IP; provide a way for users to add their own information to error reports; persist errors to the Windows Event Log, XML files, or a custom database; send detailed error notifications via e-mail and SMS text; and build an administrative dashboard to list, sort, page, view, and manage error logs.
Once complete, you’ll learn how to quickly and easily add this new framework to any web site you create using a simple .NET assembly. A complete sample application and C# source code for the exception processing framework are available as a companion download.