【发布时间】:2012-03-29 21:54:39
【问题描述】:
在无论如何都会抛出异常的情况下留下无法访问的中断语句是愚蠢的吗?如果逻辑发生变化,我的防御部分想把它留在那里。我的另一部分不希望其他开发人员在我的代码上看到编译器警告(“检测到无法访问的代码”)。
switch (someInt)
{
case 1:
// Do something
break;
case 2:
// Do something else
break;
case 3:
// Oh, we don't use threes here!
throw new Exception("Business rules say don't use 3 anymore");
break; // Unreachable...until the fickle business rules change...
default:
throw new Exception("Some default exception");
break; // Unreachable...until...well, you get the idea.
}
怎么办?
更新
我看到一些回复说在以后删除抛出会导致编译器错误。但是,简单地删除(或评论)抛出而不在它之后中断会堆叠案例,这可能是意外行为。我并不是说这是一种可能的情况,但是……嗯,防御性编程是否只针对可能的情况?
【问题讨论】:
-
不再需要
break,我将其删除,因为我构建时将警告作为错误。 -
有趣的问题 - 我最初的反应是包含 break 语句,但我认为这完全取决于习惯。
-
pragma warning 如果您认为您的担忧是有效的,但不想给他人带来不便,则禁用编译指示警告,但过度防御会很快使您的代码库变得混乱
标签: c# exception switch-statement break defensive-programming