異常表示程序運行過程當中可能出現的非正常狀態,運行時異常表示虛擬機的一般操做中可能遇到的異常,是一種常見運行錯誤,只要程序設計得沒有問題一般就不會發生。受檢異常跟程序運行的上下文環境有關,即便程序設計無誤,仍然可能因使用的問題而引起。Java編譯器要求方法必須聲明拋出可能發生的受檢異常,可是並不要求必須聲明拋出未被捕獲的運行時異常。異常和繼承同樣,是面向對象程序設計中常常被濫用的東西,在Effective Java中對異常的使用給出瞭如下指導原則:編程
- 不要將異常處理用於正常的控制流(設計良好的API不該該強迫它的調用者爲了正常的控制流而使用異常)ide
- 對能夠恢復的狀況使用受檢異常,對編程錯誤使用運行時異常設計
- 避免沒必要要的使用受檢異常(能夠經過一些狀態檢測手段來避免異常的發生)對象
- 優先使用標準的異常繼承
- 每一個方法拋出的異常都要有文檔文檔
- 保持異常的原子性編譯器
- 不要在catch中忽略掉捕獲到的異常虛擬機