は、次のコードスニペット考えてみましょう:今すぐ独自のバグを検出するコードはありますか?
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.");
はあなたのコードがエラー状態を検出した場合は、カスタム例外をスローするこの練習を勧めますか?このような状況があるときはどうしますか?