版權聲明:本文為部落客原創文章,轉載注明出處http://blog.csdn.net/u013142781
當然真正工作裡面主動抛出的異常都是經過分裝過的,自己可以定義錯誤碼和異常描述。
下面小寶鴿就為大家介紹一個java異常簡單封裝的例子。
在給出異常分裝例子之前,需要給大家普及java裡面的checked異常和unchecked異常的個概念。
這裡之是以讓大家清楚checked異常和unchecked異常概念,是因為:待會我們的異常是繼承unchecked異常runtimeexception的。了解一下并無壞處嘛
checked異常:
必須在代碼中顯式地處理。比如try-catch塊處理,或者給所在的方法加上throws說明,将異常抛到調用棧的上一層。
繼承自java.lang.exception(java.lang.runtimeexception除外)。
unchecked異常:
表示錯誤,程式的邏輯錯誤。是runtimeexception的子類,比如illegalargumentexception, nullpointerexception和illegalstateexception。
不需要在代碼中顯式地捕獲unchecked異常做處理。
繼承自java.lang.runtimeexception(而java.lang.runtimeexception繼承自java.lang.exception)。
看下面的異常結構圖或許層次感更加深些:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI3ADO3UzN1EjM4IjMxUTMwIzLcRXZu5ibkN3Yuc2bsJmLn1Wavw1LcpDc0RHaiojIsJye.jpg)
2.1、添加一個枚舉luoerrorcode.java如下:
注意!!!這裡我們重寫了luoerrorcode的tostring方法,至于為什麼要這樣,後面會提到,客觀請繼續看。
2.2、建立一個異常類businessexception.java,繼承runtimeexception:
這裡的代碼雖然短,但是有兩點需要注意的!!!第一點是其繼承了runtimeexception,因為一般我們的業務異常都是運作時異常。第二點,這裡的構造方法調用父方法super(obj.tostring());,這就是重寫了luoerrorcode的tostring方法的原因了,如果還不明白,看完後面的你就明白了。
2.3、測試類exceptiontest.java:
運作結果:
補充一下:在我們實際項目裡面,比如别人調用你接口,你可能需要先看他傳過來的對象是不是空的,先判斷如果傳過來的對象為空給有友好的提示”[luo001]對象為空”,不然後面的代碼估計會出現空指針異常了。
一般公司都會分裝一個基礎架構,異常分裝是其中一部分,當然他們對異常的分裝肯定比我這個例子複雜多,是以本例僅供參考!
如果懶得copy和paste的話,直接下載下傳工程吧:
<a href="http://download.csdn.net/detail/u013142781/9422684">http://download.csdn.net/detail/u013142781/9422684</a>