Visual Studio的调试功能非常强大。当异常发生的时候,能够自动定位到异常发生的地方。但是如果你在代码外层显式的加上了Try-Catch异常捕获的时候,默认情况下,Visual Studio会直接跳到异常处理代码块,而不是出现异常的代码行。
namespace BreakOnException
{
class Program
{
static void Main(string[] args)
{
try
{
Program p = null;
Console.WriteLine(p.GetHashCode());
}
catch (System.Exception ex)
{
}
}
}
}
上面的代码会抛出经典的NullReferrenceException。但是当你在调试状态下运行时,Visual Studio会将代码停在catch这一行,而不是Console.WriteLine这一行。