解決 JAVA 疑難雜症的“偏方”

前言

我們經常在解決Java的各種奇怪Bug中,遇到一些明明覺得很對,但是又找不出原因的問題。各種Debug,各種排除後,發現問題居然出在了一些平時很難注意到的地方,今天就來總結一下。

1. 變量/字段名有微妙的不同

這個絕對是經常遇見的罪魁禍首,雖然不致命,但是難以排查。主要出現在利用BeanUtil進行對象屬性拷貝的時候,明明覺得字段一毛一樣,但是拷貝完之後,後面的字段總是null。
肉眼是最信不過的,利用查找工具,依次查找(區別大小寫):

  • 類型是否一致
  • 大小寫是否一致,尤其是駝峯式的首字母
  • 是否下劃線一致
  • 是否單詞拼寫有誤,比如略寫形式是否一樣,字母l和數字1是否用錯
  • 有沒有多空格

2. 分支是否全部覆蓋

有時候,總覺得有些代碼老是走不到,不管怎麼打點,怎麼加日誌,就是沒有信息。
基本上是因爲根本就沒有走到一開始的地方,仔細搜索一下,當前方法是否還有其他分支調用。

3. 是否在一個線程內

尤其利用並行Steam, FeignClient, ExecutorServie等多線程的環境下,變量並不是共享的。

4. 精度是否損失

Double,Float在進行計算時,經常性的與預期的值不相等,這是因爲這兩個類型在計算時,硬件環境不同,計算精度會有所損失,推薦使用BigDecimal進行計算。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章