我有以下代碼...後來代碼影響前面的代碼,調試器會在代碼塊不應當進入
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);
}
我通過這個代碼調試器中運行(通過單元測試),當len爲3時,它將進入if (len.Equals(0))
塊。我也嘗試將if語句更改爲if (string.IsNullOrWhitespace(request.Code))
,並且我遇到同樣的問題。
如果我刪除try/catch並在代碼塊中留下代碼,一切都很好。
那麼,任何人都可以解釋這裏究竟發生了什麼?
編輯: 澄清request.Code的值是「WH1」,因此len爲3這是什麼調試器告訴我,就在我試圖跨過if語句。
編輯2: 我得到了一個失敗的測試,這導致我調試此代碼。但是現在測試正在通過,我改變了另一段未在我的問題中顯示的代碼。我所有的測試都通過了,但是當我通過它進行調試時,調試器仍然看起來好像它正在執行第一個if塊內的throw。非常混亂,但是如果我繼續按照我的預期繼續發表聲明。
它似乎是調試器中某種類型的錯誤,因爲代碼沒有被執行,只是光標正在執行該代碼並且沒有執行任何操作。
你的問題是什麼? request.Code的值是什麼,以及您預期的檢查結果是什麼:if(string.IsNullOrWhitespace(request.Code))? –
@DavidePiras我已經爲我的問題添加了一點澄清。 –
你沒有隱藏的;在if語句之後 - 也許在屏幕的右側? – Jimmy