Exceptions(小节)
1.什么是exceptions:
契約精神:簡單說api調用者傳入約定范圍內的參數,api返回約定相應的數值或做相應的操作
兩個約定:分別可以稱之為前置條件與后置條件
e.g:
String str = "12345"try {str.charAt(-1);str.charAt(2);} catch (Exception e){e.printTrack() } 上例中,約定范圍內的參數應該是0,1,2,3,4(str.lenth() - 1)
傳入參數為-1時,不在約定范圍內,違反了前置條件
str.charAt(2),如果不能正常返回str中得數值時,則是違反了后置條件
exceptions:api調用者或api沒有遵守前后置條件導致存在可預見的異常狀態
2.exceptions的類型
Error:客戶端無法處理的exceptions 例如 oom ,只能交給jvm處理
checked exceptions:如果希望api調用者有意識地采取措施,那么拋出checked exceptions
eg: 當上傳文件失敗時,throw NoNetWorkExceptions時,api調用者,可以將文件存儲在本地,采用另一種策略
unchecked exceptions:如果希望api調用者不必要采取補救措施,那么拋出 unchecked exceptions
eg:str.charAt(-1) StringIndexOutOfBoundsException
自定義異常類的作用,關鍵在于可以嵌入更多地信息
3.異常設計原則
- 如果方法遭遇了一個無法處理的意外情況,那么拋出一個異常
- 如果你認為客戶端程序需要有意識地采取措施,那么拋出檢查型異常
- fail fast 盡早拋出異常
- catch之后,不要什么都不做
?
參考:http://www.cnblogs.com/JavaVillage/articles/384483.html
http://www.cnblogs.com/octobershiner/archive/2012/12/20/2827120.html
http://niehan.blog.techweb.com.cn/archives/259.html?
轉載于:https://www.cnblogs.com/jsaint/articles/3374742.html
總結
以上是生活随笔為你收集整理的Exceptions(小节)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用Template时 typename
- 下一篇: windows7 安装IIS没有defa