寫代碼必定要標準,一個String比較引起的血案

今天在處理一個bug的時候,發現該bug出現狀況十分特殊,只有在weblogic下出現,jboss下並不能出現。 java

通過屢次調試,發現業務邏輯沒問題(沒懷疑Action的)。每次在jboss下都能正確insert,但到了weblogic就沒響應,因爲Weblogic是在遠程服務器,因此沒在weblogic上調試。 web

實在不行,就在執行SQL語句那裏把語句打印出來,結果發現,調用的邏輯竟然是其餘的方法。 服務器

調用的邏輯是這樣的 spa

if 主鍵不爲空 
  調用更新邏輯
else
  調用插入邏輯
問題就出如今主鍵的判斷上。由於主鍵是字符串,因此代碼裏判斷的是

if (null != pk && "" != pk)
這問題就在 ""!= pk上了。這裏修改成!"".equals(pk)問題就解決了。其實就是 字符串內容的比較不能用==或!=。

看來代碼不規範真的會害死人,有時候寫代碼的時候仍是要想下之後維護的。我猜寫這個代碼的人當時確定在本身機器上調試經過就滿心歡喜就提交了代碼了。 調試

相關文章
相關標籤/搜索