gpt4 book ai didi

c# - 为什么连续抛出2个异常不会产生无法访问的代码警告?

转载 作者:行者123 更新时间:2023-11-30 18:25:50 25 4
gpt4 key购买 nike

为什么下面的代码行没有产生编译器警告?

void Main()
{
throw new Exception();
throw new Exception();
}

在我看来,编译器应该会通知您无法到达第二个抛出异常。

最佳答案

这显然是一个编译器错误,它是在 C# 3.0 中引入的——就在我大量重构可达性检查器的时候。这可能是我的错,抱歉。

这个错误是完全良性的;基本上,我们只是忘记了警告记者中的一个案例。我们正确地生成了可达性信息;正如其他人指出的那样,我们在代码生成之前正确地删除了无法访问的代码。

这个错误只不过是警告生成器中的一个缺失案例。我们有一些棘手的代码可以确保当您使大部分代码无法访问时我们不会报告无数警告。编译器有专门报告无条件 gotos(“goto”、“break”、“continue”)、条件 gotos(“if”、“while”等)、try-catch-finally(包括等效形式)的警告的代码try-catch-finally,如 lock 和 using)、 block 、返回(yield 返回和常规返回)、局部声明、标记语句、开关和表达式语句。

您在该列表中看到“抛出语句”了吗?我也不。那是因为我们忘记了它。

对于给您带来的不便,我们深表歉意。我会向 QA 发送一条说明,我们会在该语言的 future 版本中修复此问题。

感谢您提醒我注意这一点。

关于c# - 为什么连续抛出2个异常不会产生无法访问的代码警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29583719/

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