Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么不捕获异常?_C#_Exception_Nullreferenceexception - Fatal编程技术网

C# 为什么不捕获异常?

C# 为什么不捕获异常?,c#,exception,nullreferenceexception,C#,Exception,Nullreferenceexception,以下代码生成一个NullReferenceException,但try块未捕获(在Debug和Release模式下): 相反,程序将中断,并突出显示有问题的行: 为什么? 更新:Scott建议的异常的文本表示: System.NullReferenceException occurred HResult=-2147467261 Message=Object reference not set to an instance of an object. Source=Exception

以下代码生成一个
NullReferenceException
,但try块未捕获(在
Debug
Release
模式下):

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

为什么?

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

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

在“异常设置”下的示例图像上:选中复选框


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

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


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

如果您使用的是Visual Studio 2015:

调试->窗口->异常设置


搜索NullReferenceException,然后取消选中该选项。

如果您使用的是Visual Studio 2015:

调试->窗口->异常设置


搜索NullReferenceException,然后取消选中该复选框。

这是因为选中了此框

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


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

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


您可能已将调试器配置为在第一次出现异常时中断。如果您在没有附加调试程序的情况下运行此程序,它是否会打印“捕获异常”?如果我没有弄错,您是否尝试过使用
=
,它抛出的异常与
string不同。Equals(string)
这样捕获一般异常通常是不好的做法。它会导致代码中出现稀疏且无法追踪的行为。更不用说例外情况是极其不符合要求的。如果变量可以为null,那么在访问它之前应该检查null值!另一方面,您也可以这样做:
if(“t1”.Equals(text))
它不会抛出异常谢谢你的建议!当然,我基本上知道异常处理是如何工作的,但是来自Java世界,我不知道“第一次机会异常”的概念。但我现在读了一篇关于它的短文,并有了这个想法。上面的例子故意认为非常基本,以显示我所面临的问题。谢谢。您可能已将调试器配置为在第一次出现异常时中断。如果您在没有附加调试程序的情况下运行此程序,它是否会打印“捕获异常”?如果我没有弄错,您是否尝试过使用
=
,它抛出的异常与
string不同。Equals(string)
这样捕获一般异常通常是不好的做法。它会导致代码中出现稀疏且无法追踪的行为。更不用说例外情况是极其不符合要求的。如果变量可以为null,那么在访问它之前应该检查null值!另一方面,您也可以这样做:
if(“t1”.Equals(text))
它不会抛出异常谢谢你的建议!当然,我基本上知道异常处理是如何工作的,但是来自Java世界,我不知道“第一次机会异常”的概念。但我现在读了一篇关于它的短文,并有了这个想法。上面的例子故意认为非常基本,以显示我所面临的问题。谢谢。我选择这个答案是正确的,因为它是第一个确定答案的答案。非常感谢。我选择这个答案是正确的,因为它是第一个确定答案的答案。非常感谢。谢谢你的详细回答!谢谢你的详细回答!
System.NullReferenceException occurred
  HResult=-2147467261
  Message=Object reference not set to an instance of an object.
  Source=ExceptionTest