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

Sub*_*cob 0 c# c++ java

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

int[] arraynums = new int[3] {1,2,3};
int Sample = 0;
try
{
Sample = arraynums[3];
}
catch
{
Sample=4;
}
Run Code Online (Sandbox Code Playgroud)

在这里,我可以使用一个不会遇到错误的替代逻辑.但是如果我使用try catch块,我仍然可以减少代码.是否建议使用try catch块来解决逻辑?如果不是,为什么呢?

Fal*_*que 5

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

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

其他帖子中有相当多的资料:

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