次のコードスニペットを考えてみましょう。
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を返すことがあります。
0を返す場合、私は _data [index - 1]
ステートメントでArgumentOutOfRangeExceptionを取得します。私はその例外のバブルアップを許可することができますが、私はむしろこれを行うだろう:
if (index == 0)
throw new ApplicationLogicException("There is a bug that caused FindClosestIndex to return an int <= 0 when it shouldn't have.");
コードでエラー状態が検出された場合、カスタム例外をスローするこの方法をお勧めしますか?このような状況があるときはどうしますか?