為什么 SonarQube 在這段代碼中抱怨?我閱讀了解釋,但并不真正理解為什么以及我需要做什么才能讓它消失。public async Task Add(SomeModel obj){ if (obj == null) { throw new ArgumentNullException(nameof(obj)); } var obj2 = new OtherObject(); obj2.UpdateWith(obj); await _localDatabaseService.AddAsync(obj2);}將代碼更改為這樣并不能解決問題。public Task Add(SomeModel obj){ if (obj == null) { throw new ArgumentNullException(nameof(obj)); } return AddInternal(obj);}private async Task AddInternal(SomeModel obj){ var obj2 = new OtherObject(); obj2.UpdateWith(obj); await _localDatabaseService.AddAsync(i);}
1 回答

慕絲7291255
TA貢獻1859條經驗 獲得超6個贊
我只是想你的例子,這個問題不提高你的第二個代碼(替換AddAsync(i)用AddAsync(obj2)匹配第一代碼邏輯。
關于規則的解釋,我認為該網站非常清楚,但讓我提供一個代碼示例來嘗試說明錯誤的行為。
static async void Main(string[] args)
{
var x = new Program().Add(null); // Exception is not raised here...
// do some other things
await x; // ... but here when awaited
}
正如您所看到的,問題并未在您期望的時候提出。
顯然,如果您確定自己永遠不會遇到這種情況,并且沒有人會以這種方式使用您的方法,那么您可以關閉該規則。
- 1 回答
- 0 關注
- 229 瀏覽
添加回答
舉報
0/150
提交
取消