У меня есть следующий код ...
var len = request.Code.Trim().Length;
if (len.Equals(0))
{
throw new ArgumentOutOfRangeException("request.Code");
}
try
{
var obj = _repository.GetSomething(request.Code);
return Result.Success(obj);
}
catch (Exception)
{
return Result.Failure(MessageCode.MissingData);
}
Я выполняю этот код с помощью отладчика (с помощью модульного теста), и он входит в блок if (len.Equals(0))
, когда len равно 3. Я также попытался изменить оператор if на if (string.IsNullOrWhitespace(request.Code))
, и я получаю та же проблема.
Если я удаляю try / catch и оставляю только код в блоке try, все в порядке.
Итак, кто-нибудь может объяснить, что здесь происходит?
EDIT:
Чтобы уточнить значение request.Code - «WH1», следовательно, len - 3. Именно это и говорит мне отладчик перед тем, как я попытаюсь перешагнуть оператор if.
РЕДАКТИРОВАТЬ 2:
Я получил неудачный тест, который привел меня к отладке этого кода. Но теперь, когда тест пройден, я изменил другой фрагмент кода, не показанный в моем вопросе. Все мои тесты проходят сейчас, но когда я отлаживаю через него, отладчик все равно выглядит так, как будто он выполняет бросок в первом блоке if. Очень запутанно, но если я перейду к заявлению, оно будет продолжаться, как я и ожидал.
Кажется, это какая-то ошибка в отладчике, поскольку код не выполняется, просто курсор переходит к этому коду и ничего с ним не делает.