I was doing some unit testing on code that could throw a number of exceptions depending on the inputs. So I tried something like the below code: (simplified for the example)
Bizarre behavior here...
VS2k8 console app. The following:
try
{
throw new T();
}
catch (T tex)
{
Console.WriteLine("Caught passed in exception type");
}
catch (Exception ex)
{
Console.WriteLine("Caught general exception");
}
results in "Caught general exception".
But, remove the (useless) variables from the catch statements:
try
{
throw new T();
}
catch (T)
{
Console.WriteLine("Caught passed in exception type");
}
catch (Exception)
{
Console.WriteLine("Caught general exception");
}
results in "Caught passed in exception type"!!!
Update:
Heheh... Its a bug: https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=362422&wa=wsignin1.0
Source? Here. Why does catch(TException) handling block behaviour differ under the debugger after installing Visual Studio 2008?