C# 未检测到“无法访问的代码”-返回后Visual Studio中出现新异常时发出警告

C# 未检测到“无法访问的代码”-返回后Visual Studio中出现新异常时发出警告,c#,C#,我只是想知道为什么Visual Studio没有在此处为异常显示无法访问的代码检测警告: private void ReturnException() { return; throw new Exception(); int iAmUnreachable = 0; } 该警告仅针对整数显示。 是否有任何情况会抛出异常?抛出是不可访问的,但在抛出语句的情况下,C编译器不会产生警告。这似乎很奇怪,但这是经过设计的,并记录在本文中。这是为了保持与旧编译器版本的向后兼容性,这些

我只是想知道为什么Visual Studio没有在此处为异常显示无法访问的代码检测警告:

private void ReturnException()
{
    return;
    throw new Exception();
    int iAmUnreachable = 0;
}
该警告仅针对整数显示。
是否有任何情况会抛出异常?

抛出是不可访问的,但在抛出语句的情况下,C编译器不会产生警告。这似乎很奇怪,但这是经过设计的,并记录在本文中。这是为了保持与旧编译器版本的向后兼容性,这些版本没有对此发出警告,即更改它将生成许多无害的警告。尼尔·加夫特:

以下类型的语句不会被设计报告为无法访问 -块语句但是,其中的语句可能会被报告为无法访问 -抛出语句 -空洞的陈述

我们这样做是因为旧编译器就是这么做的,我们不想破坏现有的代码。我认为这些在哲学上是合理的,但无论如何我们不会改变它


throw是不可访问的,但是在throw语句的情况下,C编译器不会产生警告。这似乎很奇怪,但这是经过设计的,并记录在本文中。这是为了保持与旧编译器版本的向后兼容性,这些版本没有对此发出警告,即更改它将生成许多无害的警告。尼尔·加夫特:

以下类型的语句不会被设计报告为无法访问 -块语句但是,其中的语句可能会被报告为无法访问 -抛出语句 -空洞的陈述

我们这样做是因为旧编译器就是这么做的,我们不想破坏现有的代码。我认为这些在哲学上是合理的,但无论如何我们不会改变它

听起来更像是一只虫子。回来回来将在第二次返回时报告无法访问的代码警告。我不知道为什么throw语句会有什么不同。它听起来更像一个bug。回来回来将在第二次返回时报告无法访问的代码警告。我不知道为什么throw语句会有什么不同。