譯 Java異常處理策略

2021-09-14 08:09:25 字數 2148 閱讀 4081

在本文中,我們介紹了在oop應用中處理異常的常見策略,這些策略符合最佳的異常處理技術,可以在任何應用中使用。

下圖提供了策略概述,它展示了從檢測階段到處理階段的異常處理流程。該圖需要從下往上進行閱讀:

error detection:在策略的底部是錯誤檢測,這是發生異常的地方,它要麼由程式進行檢測,要麼由一些外部呼叫引發。

local exception handling:在第二級是本地異常處理,檢測錯誤的類嘗試在本地處理異常,例如:將請求傳送到備份伺服器,或等待x秒後再次嘗試等...如果異常無法恢復,則將其傳播到較高階別。

propagate exception to higher levels:當本地錯誤處理不起作用時,該類收集診斷資訊,再現和報告錯誤所需的所有資訊,然後將該異常傳到棧中。 如果檢測到的異常不是低級別依賴(取決於低級別實現),那麼它將被丟擲,否則將被轉換為自定義異常,以實現元件之間的解耦。

keep propagating if nothing to do with the exception:較高階別的類將會繼續將異常傳到棧中, 只要它們與異常無關。同時關閉在傳遞路徑的所有資源(例如檔案、網路連線、釋放分配的緩衝區等),並新增相關的上下文資訊, 這將有助於確定錯誤的原因和嚴重性。

handle exception:在這個階段,異常會到達乙個負責處理它的類,異常所攜帶的所有錯誤資訊都記錄在此,並且根據異常的嚴重性,該類可以處理異常或者結束程式。

實現異常處理策略時要做的第一件事就是,為程式的每個元件建立自定義異常,自定義異常如下所示:

public class componentexception extends exception 

public componentexception(exception ex)

public int geterrorcode()

public void seterrorcode(int errorcode)

public string geterrordescription()

public void seterrordescription(string errordescription)

public boolean issevere()

public void setsevere(boolean issevere)

}

以下描述了componentexception類的屬性:

在檢測到錯誤並無法從中恢復時,異常將向上傳播到呼叫堆疊,直到到達處理它的某個 try-catch塊。該異常可以按原樣傳遞,也可轉換為自定義異常。

如果異常不依賴於定期更改的低階實現或動態實現,那麼你只需關閉開啟的資源,並把異常積蓄傳到呼叫棧而不去捕獲它。下面是乙個例子:

public void dosomething() throws someexception  finally 

}

當捕獲的異常取決於低級別或動態實現時,它會被轉換為乙個特定的異常,然後重新啟動呼叫堆疊。 下面是乙個例子:

public student readstudent(string id) throws someexception 

catch(sqlexception ex)

}

只要它還沒有到達能夠處理它的類,異常就會繼續傳播。

p.s:強烈建議在異常傳播到堆疊時更新異常的嚴重性,無論是異常被繼續丟擲,還是轉換為自定義異常。

在程式中,你需要捕獲並響應來丟擲異常,通常你需要在呼叫層次的頂部執行此操作。

捕獲異常時首先要做的是記錄它,通常我更喜歡使用printstacktrace(),之後的處理過程取決於異常的嚴重性:

下面是乙個例子:

try

else

else}}

以上是我在程式中處理異常時所遵循的策略,希望你能喜歡。

Java異常處理

package test public class testexception boolean testex throws exception catch exception e finally boolean testex1 throws exception system.out.println ...

java異常處理

在自動化指令碼編寫的過程中,task層的所有方法都要throws exception 異常處理 程式執行過程中,可能會出現異常情況,比如被0除 對負數計算平方根等,還有可能會出現致命的錯誤,比如記憶體不足,磁碟損害無法讀取檔案等,對於異常和錯誤情況的處理,統稱為異常處理。在自動化中,有可能是找不到某...

Java異常處理

注意 1.當程式可能出現多種異常,而且又要為這些異常一一處理時,後面依次列寫catch語句塊 2.但所列寫的catch應該滿足從子類到父類的異常處理,如上面,第一和二兩個異常都是exception的子類 3.finally語句跟在catch語句後面,用來實行一些出現異常後要進行的處理 4.處理執行時...