为什么没有抓住异常?

时间:2017-02-17 22:24:06

标签: c# exception nullreferenceexception

以下代码生成dy/dx,但未被try块捕获(在NullReferenceExceptionDebug模式下):

Release

相反,程序会中断并突出显示违规行:

enter image description here

为什么吗

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

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

3 个答案:

答案 0 :(得分:3)

在例外设置下的示例图像上:转动复选框。

通过这样做,当抛出空引用异常时它不会中断。并且catch将捕获异常。

答案 1 :(得分:3)

这是因为您已选中此框

enter image description here

这会使你的调试器在到达catch块之前中断,如果你点击继续,你会看到它继续进入catch。如果取消选中此框,则可以通过Debug -> Windows -> Exception Settings下拉菜单中的“例外设置”窗口重新启用该框。 “公共语言运行时例外”部分包含NullRefrenceException选项。

enter image description here

答案 2 :(得分:2)

如果您使用的是Visual Studio 2015:

调试 - > Windows->例外设置

搜索NullReferenceException,取消选中。