1

假设我需要这样的东西。(这个代码是错误的,但只是一个例子)。这段代码不是我的问题!它只是一个例子。我知道如何使用 if else 语句来编写它。我正在考虑一个更复杂的上下文!

int[] arraynums = new int[3] {1,2,3};
int Sample = 0;
try
{
Sample = arraynums[3];
}
catch
{
Sample=4;
}

在这里,我可以使用不会出错的替代逻辑。但是如果我使用 try catch 块,我仍然可以减少代码。是否建议使用 try catch 块来解决逻辑?如果不是,那为什么?

4

4 回答 4

6

由于以下原因,您不应使用异常来实现业务逻辑(或流控制):

  • 这不是一个好习惯。这会让其他开发人员感到困惑,即使你在 6 个月后也会感到困惑。(这违反了PrincipleOfLeastAstonishment。这使得程序员更难阅读。)
  • 例外是昂贵的。
  • 糟糕的设计。

其他帖子中有相当数量的材料:

有关于它的整个维基:http ://c2.com/cgi/wiki?DontUseExceptionsForFlowControl

于 2013-03-18T05:06:08.660 回答
3

为什么不使用 if 语句?

if(arraynums.length > 3)
{
    Sample = arraynums[3];
}
else
{
    Sample = 4;
}
于 2013-03-18T04:49:40.387 回答
3

我假设您的代码相当做作,因为它很容易毫无例外地重写它。异常对于运行时来说是相对昂贵的。如果被滥用,它们可能会不必要地减慢您的代码。通常,您应该在允许抛出异常情况之前检查它们。

推荐阅读:

于 2013-03-18T04:50:46.743 回答
0

就我个人而言,我只会在错误或不确定对象在运行时是否可用的情况下使用 try catch。

在您的代码中,您最好将 Sample = 4 设置为默认值并在将其设置为 arraynums[3] 之前进行检查。

于 2013-03-18T04:50:00.473 回答