Рассмотрим следующий фрагмент кода:
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, я получу исключение ArgumentOutOfRangeException для оператора _data[index - 1]
.Я мог бы позволить этому исключению всплыть, но я бы предпочел сделать это:
if (index == 0)
throw new ApplicationLogicException("There is a bug that caused FindClosestIndex to return an int <= 0 when it shouldn't have.");
Вы бы порекомендовали эту практику создания пользовательского исключения, если ваш код обнаруживает состояние ошибки?Что вы делаете, когда у вас такая ситуация?