如何優雅的處理Java異常

Java中異常提供了一種識別及響應錯誤情況的一致性機制,有效地異常處理能使程序更加健壯、易於調試。異常之所以是一種強大的調試手段,在於其回答了以下三個問題:

什麼出了錯?

在哪出的錯?

為什麼出錯?

實際生產環境中,有很多其他的考慮。先講基本情況。就拿網絡相關的接口中拋出的IOException來說吧。假設你的程序啟動了一個TCP客戶端,向某一個服務器傳輸一串數據。但這時網絡忽然斷了,可你的程序非常牛,過了五秒鐘重試,兩次之後又通了,於是你繼續傳數據。這時你隔壁家老王把你們家網線震掉了,你的程序無論怎麼重試都無法連接到服務器,試了5次之後決定終止嘗試並彙報問題。

每次網絡中斷都會由JDK底層拋出一個IOException。此時使用的IOException是一個checked exception,因為網絡中斷是可以被恢復的。

所以結論是,Exception的處理並沒有死規矩。何時用什麼樣的異常,是一個需要大量的實際項目積累、試錯才能有把握做好的事情。

如何優雅的處理Java異常

使用自定義的“小”異常,控制局部流程。

public class MainAction {

@Autowired

MyService myService;

public void doSth1() {

try {

if (!myService.operationA()) {

throw new OperationFailedException("operationA failed");

}

if (!myService.operationB()) {

throw new OperationFailedException("operationB failed");

}

if (!myService.operationC()) {

throw new OperationFailedException("operationC failed");

}

myService.operationD();

} catch (OperationFailedException e) {

tip(e.getMessage());

} catch(Exception e){

tip("eat shit");

}

}

private class OperationFailedException extends Exception {

public OperationFailedException(String message) {

super(message);

}

}

public void tip(String msg) {

}

}

如何優雅的處理Java異常

最後,對於運行時異常、錯誤或可查異常,Java技術所要求的異常處理方式有所不同。

由於運行時異常的不可查性,為了更合理、更容易地實現應用程序,Java規定,運行時異常將由Java運行時系統自動拋出,允許應用程序忽略運行時異常。

尚學堂12大精英團隊+各類實戰項目,真正實現1+1>10的目標效果。幫助學員迅速成長,持久騰飛,成就學員“高富帥”人生;幫助企業技術和團隊成長,成就百年中華名企;助力中國持續成為世界強國而貢獻力量。尚學堂12大精英團隊,覆蓋IT行業十大領域,實戰團隊240人,服務學員累計超過10萬人,就業合作企業數量500+。


分享到:


相關文章: