Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.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# Visual Studio 2019中断已处理的异常(C)_C#_Exception_Visual Studio 2019 - Fatal编程技术网

C# Visual Studio 2019中断已处理的异常(C)

C# Visual Studio 2019中断已处理的异常(C),c#,exception,visual-studio-2019,C#,Exception,Visual Studio 2019,我在try-catch块中有一些代码,可能会抛出异常 异常在catch块中处理 该代码在VS 2017下工作。但是,切换到VS2019后,调试器将不会继续(请参见屏幕截图) 如何告诉调试器“否”在已处理的异常处中断? [编辑] 在这种特殊情况下,可以通过更仔细的代码轻松地避免异常,或者通过取消选中“抛出此异常类型时中断”来禁用异常 然而,这不是我的问题 我的问题是: 为什么阿尔拉迪的2019年VS休息会处理例外情况? 我怎么能告诉它不这样做呢?有许多异常(默认情况下)会中断执行,即使您有一个“

我在try-catch块中有一些代码,可能会抛出异常

异常在catch块中处理

该代码在VS 2017下工作。但是,切换到VS2019后,调试器将不会继续(请参见屏幕截图)

如何告诉调试器“否”在已处理的异常处中断?

[编辑]

在这种特殊情况下,可以通过更仔细的代码轻松地避免异常,或者通过取消选中“抛出此异常类型时中断”来禁用异常

然而,这不是我的问题

我的问题是:

为什么阿尔拉迪的2019年VS休息会处理例外情况?


我怎么能告诉它不这样做呢?

有许多异常(默认情况下)会中断执行,即使您有一个“全面覆盖”<代码>系统。NullReferenceException就是其中之一

但是,正如您在屏幕截图的弹出窗口中看到的,您可以选择“关闭”此特定异常。当前已选中:“在引发此异常类型时中断”

取消选中此框,然后重试


(您可以在此菜单选项中进一步调整异常设置:Debug/Windows/exception settings。)

有许多异常(默认情况下)会中断执行,即使您有一个“全面捕获”<代码>系统。NullReferenceException就是其中之一

但是,正如您在屏幕截图的弹出窗口中看到的,您可以选择“关闭”此特定异常。当前已选中:“在引发此异常类型时中断”

取消选中此框,然后重试


(您可以在此菜单选项中进一步调整异常设置:Debug/Windows/exception settings。)

关于为什么这会是“糟糕的做法”,已经有很多人在讨论了

也就是说,有
debuggerStepThrough

确保阅读文档以理解其含义-例如,您需要启用JMC

同样,当你做这些肮脏的异常检查时,请尽可能具体,以避免意外

try
{
   var x = MyFunc();

   // We do a check here that will throw an exception 
   var y = ThisFuncWillThrowNullRef(x);
}
catch(exception)
{
    // ALL exceptions are swallowed
    // What if MyFunc() throws an exception instead of the second function? what do we do then?
}



编辑;在我使用的应用程序中,即使我们像您现在这样“吞咽”异常,我们也会显式详细地记录异常。总是。修复异常比不知道发生了什么更容易,而且随着你的应用程序越来越大,会有越来越多的异常发生。

关于为什么这会是一种“坏习惯”,已经有很多人说了

也就是说,有
debuggerStepThrough

确保阅读文档以理解其含义-例如,您需要启用JMC

同样,当你做这些肮脏的异常检查时,请尽可能具体,以避免意外

try
{
   var x = MyFunc();

   // We do a check here that will throw an exception 
   var y = ThisFuncWillThrowNullRef(x);
}
catch(exception)
{
    // ALL exceptions are swallowed
    // What if MyFunc() throws an exception instead of the second function? what do we do then?
}



编辑;在我使用的应用程序中,即使我们像您现在这样“吞咽”异常,我们也会显式详细地记录异常。总是。修复异常比不知道发生了什么更容易,而且随着你的应用程序越来越大,会有越来越多的异常发生。

[编辑:这个问题不是关于正确的处理,而是破坏行为。所包含的示例当然不是推荐的处理]

根据Mattias Larsson的回答,默认情况下,许多异常总是会中断执行,无论它们是否得到处理。
System.NullReferenceException
就是其中之一。为了防止出现这种情况,当抛出此异常类型时,可以取消选中“中断”框。这样做将导致以下行为:


如前所述,在未处理时,您希望调试器在
系统上继续中断。NullReferenceException
;这是标准行为,因为这样的异常是关键的,即不可恢复的(也许有更好的术语?)。

[编辑:这个问题不是关于正确的处理,而是破坏行为。所包含的示例当然不建议处理]

根据Mattias Larsson的回答,默认情况下,许多异常总是会中断执行,无论它们是否得到处理。
System.NullReferenceException
就是其中之一。为了防止出现这种情况,当抛出此异常类型时,可以取消选中“中断”框。这样做将导致以下行为:


如前所述,在未处理时,您希望调试器在
系统上继续中断。NullReferenceException
;这是标准行为,因为这样的异常是关键的,即不可恢复的(也许有更好的术语?)

写一条评论而不是留下不喜欢的内容,会更受欢迎只要删除“抛出异常类型时中断”。或者在异常设置中禁用“NullReferenceException”。但是,我不建议这样做。您永远不应该捕获这样的一般异常,您最好对注释进行NULL检查.Thx。然而,这不是我要问的。我想知道为什么VS2019决定在未处理异常时中断,以及我如何告诉它不要这样做。写一条评论而不是留下不喜欢的内容,会更受欢迎只要删除“抛出异常类型时中断”。或者在异常设置中禁用“NullReferenceException”。但是,我不建议这样做。您永远不应该捕获这样的一般异常,您最好对注释进行NULL检查.Thx。然而,这不是我要问的。我想知道为什么VS2019决定在未处理异常时中断,以及我如何告诉它不要这样做。我可以看到这个选项。然而,我确实希望VS在这种类型的异常时中断,只要它未被处理。据我所知,如果您未捕获异常,即使您取消选中此框,调试器也应停止。在异常设置中,它似乎只有exc