Более поздний код, влияющий на более ранний код, отладчик, входящий в блок кода, который он не должен вводить - PullRequest
0 голосов
/ 12 декабря 2011

У меня есть следующий код ...

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. Очень запутанно, но если я перейду к заявлению, оно будет продолжаться, как я и ожидал.

Кажется, это какая-то ошибка в отладчике, поскольку код не выполняется, просто курсор переходит к этому коду и ничего с ним не делает.

Ответы [ 2 ]

0 голосов
/ 19 декабря 2011

Код вообще не запускался, отладчик просто шел к этой строке, но фактически не выполнял код.

0 голосов
/ 13 декабря 2011

Я сталкивался с этим раньше, если код не соответствует отлаживаемому коду. Вы отлаживаете процесс, используя «Присоединить к процессу», или вы просто заходите в меню «Отладка» и выбираете «Начать отладку» (F5)? Является ли код, который вы видите выше, частью отлаживаемого проекта, или он находится в соответствующей сборке?

Вы также можете попробовать выполнить перестройку всего решения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...