为什么没有捕获异常?

Why is exception not caught?

以下代码生成 NullReferenceException,但未被 try 块捕获(在 DebugRelease 模式下):

using System;

namespace ExceptionTest {
    public class Program {
        public static void Main(string[] args) {
            String text = null;
            try {
                if (text.Equals("t1")) {
                    Console.WriteLine("r1");
                } else {
                    Console.WriteLine("r2");
                }
            } catch(Exception ex) {
                Console.WriteLine("Exception catched!");
            }
        }
    }
}

相反,程序中断并突出显示有问题的行:

为什么?

更新:Scott 建议的异常的文本表示:

System.NullReferenceException occurred
  HResult=-2147467261
  Message=Object reference not set to an instance of an object.
  Source=ExceptionTest

在异常设置下的示例图像上:勾选复选框。

通过这样做,当空引用异常是 thrown.And 时,它不会中断,catch 会捕获异常。

如果您使用的是 Visual Studio 2015:

调试->Windows->异常设置

搜索 NullReferenceException,然后取消选中它。

发生这种情况是因为您选中了此框

这会使您的调试器在到达 catch 块之前中断,如果您点击继续,您会看到它继续进入 catch。如果取消选中该框,则可以 re-enable 它位于通过 Debug -> Windows -> Exception Settings 下拉菜单找到的 "Exception Settings" window 下。 "Common Language Runtime Exceptions" 部分包含 NullRefrenceException 选项。