独自のバグを検出するコード?

次のコードスニペットを考えてみましょう。

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.");

コードでエラー状態が検出された場合、カスタム例外をスローするこの方法をお勧めしますか?このような状況があるときはどうしますか?

1

1 答え

個人的には、私はそのようなカスタム例外を含んでいます。それはコンドームの議論のようなものです。それを必要とするのではなく、それを必要とするのではなく、必要としないことが望ましいです。まれなケースが発生した場合、カスタム例外メッセージを含めてロジックエラーを追跡しやすくなりますが、実行可能ファイルはほんの少しだけ大きくなります。それ以外の場合、ArgumentOutOfRangeExceptionはどこでも発生する可能性があります。例外を追加するのにかかる時間は、エラーがなくてもエラーを追跡するのに要する時間をはるかに上回ります。

1
追加された