自定義異常目的
為了表示應用程序的一些特定錯誤訊息並提供新的含意。
如考慮伺服器的連線問題雖然可以全部使用 IOException 來表示,但各種連線問題卻可再度細分,如
伺服器關閉(ServiceClosedException) , 連線超時(ConnectTimeoutException),使用者中斷(ClientInterruptException)等等。
Note :
自定義異常必須在Throwable 體系中派生,否則不能在應用程序中傳播。
不可直接繼承Throwable,因為Throwable已經定義好2個主要分支(Error & Exception)
也不要繼承自Error 及其子類別,因為自定義通常不符合錯誤標準。
一般繼承自Exception。
自定義異常步驟
1.定義異常類別
需要繼承Throwable 或是Throwable的子類別,並提供多個建構式,最好能夠傳入String 以便儲存錯誤訊息。
public class ServiceClosedException extends Exception
{
private Date mConnectDate = new Date();
public ServiceClosedException() {
}
public ServiceClosedException(String message) {
super(message);
}
public ServiceClosedException(String message, Date connectDate){
super(message);
mConnectDate = connectDate;
}
public Date getConnectDate(){
return mConnectDate;
}
}
2.聲明方法拋出自定義類別
public void connectService() throws ServiceClosedException
{
}
3.找到故障點,建立異常並加上關鍵字 throw
public void connectService() throws ServiceClosedException
{
if(!mIsServiceConnect){
throw new ServiceClosedException();
}
}
4.自定義異常完成後,client呼叫會丟出自定義異常的方法就必須處理或是聲明該自定義異常
@Test
public void testConnectService()
{
try {
connectService();
} catch (ServiceClosedException e) {
e.printStackTrace();
}
}