为什么没有捕获异常?
Why is exception not caught?
以下代码生成 NullReferenceException
,但未被 try 块捕获(在 Debug
和 Release
模式下):
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
选项。
以下代码生成 NullReferenceException
,但未被 try 块捕获(在 Debug
和 Release
模式下):
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
选项。