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);
}