遊戲開發、企業應用皆然,熟悉常見異常含義、觸發場景與定位技巧,能將調試時間從小時級壓縮至分鐘級。
含義:訪問未初始化或已置 null 的對象引用。
高發場景:
ImageIcon 為 nullUser[] users = new User[10]; users[0].getName() → NPE預防:宣告處初始化、參數非空斷言、Optional 建模可空值、IDE 靜態分析。
含義:類加載器找不到指定全限定名類。
典型原因:
WEB-INF/lib排查:檢查發布結構、mvn dependency:tree 分析傳遞依賴、驗證類文件物理存在。
含義:數學運算異常,最常見除以零。
防範:除法前判斷分母非零、單元測試覆蓋邊界值(0、負數、極大值)。
含義:索引 < 0 或 ≥ 數組長度。
高發模式:
arr[getIndex()] 未驗證返回值length<= length 應為 < length習慣:優先用 for-each 或 List 避免手動索引。
含義:方法參數不符合預期範圍/格式。
實例:
setVolume(-10) 音量不能為負g.setColor(300, 0, 0) RGB 分量超出 0-255定位:堆棧直指調用行,檢查實參值。
含義:反射訪問非 public 成員(字段/方法/構造器)且未 setAccessible(true)。
場景:框架掃描實體類、序列化庫、單元測試訪問私有方法。
jstack/jmap 線上診斷異常不是敵人,是程式誠實的反饋。建立「異常知識庫」,每遇一類必總結,久而久之,Debug 即成模式匹配,效率倍增。