Hannes writes, "I'm currently working on maintaining rewriting an application from the early days of ASP.NET (c. 2001) to be all AJAXy and Web 2.0. One of the first things I stumbled over when I first fired up the debugger was a strange exception - the RedirectException - that got thrown on almost every page. Sometimes, it was thrown more than once in the page lifecycle, but it never made it up to the front-end.
"I quickly found out the developer didn't quite get the concept of exceptions.
try { if (!isCustomer) { -- snip lots of code to process a new order -- throw new RedirectException("/Orders/NewOrderShipping.aspx") } else if (isQuickOrder) { -- snip more order processing code -- throw new RedirectException("/Orders/Confirm.aspx") } else { -- snip even more order processing code -- throw new RedirectException("/Orders/SelectShipping.aspx") } } catch (RedirectException rEx) { Response.Redirect(rEx.Message); }