我有一个简短的设计问题要问大家。我有一个必须尽快执行的方法,但它还必须提供有关异常发生的错误的信息。
可能会在一个循环中调用函数一千次,但很少会发生异常(<1% 的值会导致错误)。该函数仅计算非常简单的数学运算,不调用任何方法,使用 LINQ 或其他方法。
好的,到目前为止的情况,下面描述了我必须解决这个方法的两个场景。
我自己的解决方案是最常用的方法,在计算前检查每个参数(防止在ramaining方法中出现异常):
int FastMethod(int number)
{
if (number <= 0)
{
throw new ArgumentOutOfRangeException();
}
// (...) more parameter validations
// do some operations with the number here
}
向我推荐的另一个解决方案是,遇到错误并且只重新抛出捕获的异常:
int FastMethod(int number)
{
try
{
// do some operations with the number here
}
catch (Exception ex)
{
throw (ex);
}
}
那么你会推荐什么?
第二种情况不需要调用所有这些可能会提高性能的 if 语句,但在我看来,它的设计看起来很糟糕。愿你能教我:)