gpt4 book ai didi

c# - if (false == true) 在内部抛出异常时执行 block

转载 作者:IT王子 更新时间:2023-10-29 03:31:25 26 4
gpt4 key购买 nike

我遇到了一个很奇怪的问题。

这是我的代码:

private async Task BreakExpectedLogic()
{
bool test = false;
if (test == true)
{
Console.WriteLine("Hello!");
throw new Exception("BAD HASH!");
}
}

看起来很简单,它不应该命中 Console.WriteLinethrow。由于某种原因,它总是命中 throw

如果我将 throw 移动到它自己的方法中,那么它就可以正常工作。我的问题是它如何忽略 if block 并触发 throw new Exception:

Here is some evidence

编辑 1: 我更新了我的代码以包含签名,我删除了与此问题无关的所有内容并运行它,它仍然发生。

最佳答案

这似乎是 async 方法中的错误,代码 并未 实际执行,但调试器使用 throw 语句进入该行。如果在 if 中的 throw 语句之前有一些代码行,这些行被忽略,调试器到带有 throw< 的行声明。

此外,如果您不使用变量 - if (false)if (true == false) 则调试器会转到正确的代码行 -右大括号。

此错误已由 @Matthew Watson 发布到 Visual Studio 团队(链接现在不可用)。

另请参阅类似问题 - Condition check in async method

编辑(2017-10-06):

问题无法在使用 .Net Framework 4.7 的 VS 2017 15.3.5 中重现。似乎 VS 团队已经解决了这个问题。

关于c# - if (false == true) 在内部抛出异常时执行 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42553039/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com