我应该使用Try Catch块来实现我的业务逻辑吗?

本文关键字:业务 我的 实现 Try Catch 我应该 | 更新日期: 2023-09-27 18:04:30

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

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

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

我应该使用Try Catch块来实现我的业务逻辑吗?

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

  • 这不是一个好的做法。这会让其他开发者感到困惑,甚至在6个月后你也会感到困惑。(这违反了最少惊讶原则。这使得程序员更难阅读。)
  • 糟糕的设计。

其他帖子中有相当多的可用材料:

  • 使用异常进行流量控制
  • 为什么不使用异常作为常规控制流?

有一个完整的wiki: http://c2.com/cgi/wiki?DontUseExceptionsForFlowControl

为什么不使用if语句呢?

if(arraynums.length > 3)
{
    Sample = arraynums[3];
}
else
{
    Sample = 4;
}

我假设您的代码是相当人为的,因为重写它很容易,没有例外。异常对于运行时来说是相对昂贵的。如果滥用,它们可能会不必要地降低代码的速度。一般来说,在允许抛出异常条件之前,应该检查异常条件。

推荐阅读:

    使用异常(c#编程指南)处理异常的最佳实践

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

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