亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

應包裝“async”/“await”方法中的參數驗證

應包裝“async”/“await”方法中的參數驗證

C#
慕村9548890 2021-08-07 17:27:06
為什么 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

}

正如您所看到的,問題并未在您期望的時候提出。


顯然,如果您確定自己永遠不會遇到這種情況,并且沒有人會以這種方式使用您的方法,那么您可以關閉該規則。


查看完整回答
反對 回復 2021-08-07
  • 1 回答
  • 0 關注
  • 229 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號