一天一个重构方法(20):以测试取代异常
2009-07-30 13:19:11Replace Exception with Test:以测试取代异常
面对一个调用者可预先加以检查的条件,你抛出了一个异常,请修改调用者,使它在调用函数之前先做测试。
public int GetValueForPeriod(int periodNumber)
{
try
{
return _values[periodNumber];
}
catch (Exception)
{
return 0;
}
}
加入条件判断后代码
public int GetValueForPeriod(int periodNumber)
{
if(periodNumber >= _values.Length)
return 0;
return _values[periodNumber];
}
异常的出现是程序语言的一大进步。异常可协助我们避免很多复杂的错误处理逻辑。但是,异常也会被滥用。异常只应该被用于异常的、罕见的行为,也就是那些产生意料之外的错误行为,而不应该成为条件检查的代替品。如果你可以合理期望调用者在调用函数之前先检查某个条件,那么你就应该提供一个测试,而调用者应该使用它。