考虑以下代码片段:
int index = FindClosestIndex(frame);
if (_data[index].Frame == frame)
return _data[index];
else
return interpolateData(frame, _data[index - 1], _data[index]);
现在,在这种情况下,我在这个代码块之前做了一些检查,以确保它FindClosestIndex()
永远不会返回 0。这应该是不可能的。但是,其中的逻辑FindClosestIndex
有些复杂,因此很可能在一些没有人预料到的罕见极端情况下尚未发现错误,即使我的代码是正确的,FindClosestIndex
也可能错误地返回 0。
_data[index - 1]
如果它确实返回 0,我将在语句中得到 ArgumentOutOfRangeException 。我可以让那个异常冒泡,但我宁愿这样做:
if (index == 0)
throw new ApplicationLogicException("There is a bug that caused FindClosestIndex to return an int <= 0 when it shouldn't have.");
如果您的代码检测到错误状态,您会推荐这种抛出自定义异常的做法吗?当你遇到这样的情况时,你会怎么做?