異常分類

image
- 非受查異常
- Error: Java虛擬機內(nèi)部或其他致命錯誤,無法挽救
- RuntimeException: 因為代碼問題導(dǎo)致的錯誤(數(shù)組越界、空指針等等)
- 受查異常
- IOException: 由于用戶輸入/調(diào)用時傳入的參數(shù)導(dǎo)致的錯誤(字符串格式/文件是否存在等等)
注意
- 必須用throw語句聲明受查異常,而對于非受查異常,要么無法挽救(Error),要么就是本身自己編寫的代碼就有問題(RuntimeException)
- 子類重寫的方法異常聲明/拋出有限制:必須是比他的父類更加具體,或根本不拋出任何異常。
異常機制使用技巧
- 不要把異常處理代替簡單的測試
- 不要過分細化異常(可以try一個代碼塊,連續(xù)catch)
- 利用異常層次結(jié)構(gòu)(拋出一個更具體的異常)
- 在檢測錯誤時,“苛刻”要比放任更加重要(早拋出,拋出EmptyStackException會比后面的NullPointerException更好)
- 不要羞于傳遞異常(晚捕獲,傳遞異常)