if語句引發的bug

最近維護高手留下的api項目,客戶端反饋一個bug過來,而後查找到可能出錯的代碼位置,是一個if語句,乍一看好像沒什麼問題,代碼以下:api

if (company.UserId != userId || project.UserId != userId)
  throw new Exception("無權操做");
 
調試後發現客戶端傳來的userId是和project.UserId相等,但不等於company.UserId,但每次都會報「無權操做」的異常,在想這麼簡單的語句,高手應該不會寫錯吧,後來看了一會,纔看出點端倪,|| 判斷是一真必真,若是company.UserId != userId爲真的話就不會再判斷後面的語句,改了一下就正常運行了,代碼以下:
if (company.UserId != userId)
{
    if(project.UserID != userId)
    {
        throw new Exception("無權操做");
    }
}

  

很簡單的bug,可有時候不當心,仍是會犯錯。
相關文章
相關標籤/搜索