簡體   English   中英

Java - 如何避免使用try catch語句

[英]Java - How can I avoid using try catch statements

我想知道如何避免try-catch語句。 現在我有一個數據庫處理程序,每次運行命令時我都必須在try塊中包圍它,如下所示:

try {
    while(levelData.next()) {
        if(levelData.getInt("level") == nextLevel) return levelData.getInt("exp");
    }
} catch (SQLException e) {
    e.printStackTrace();
}   

我可以這樣做,以便實際的函數拋出異常或什么? 而不是必須手動把所有這些嘗試? 它主要只是一個美學問題,因為這些試塊看起來很難看。

您可以拋出異常:

public void myMethod() throws SQLException {
     while(levelData.next()) {
        if(levelData.getInt("level") == nextLevel)
           return levelData.getInt("exp");
    }
}

您可以使用throws關鍵字使方法拋出異常,而不是使用try - catch塊,但在某些時候需要處理異常。 我發現最令人討厭的是多個catch語句,但是如果你使用JDK> = 1.7,它們有一個多捕獲選項可用。 對於異常日志記錄,您可以使用log4j庫。

現在我有一個數據庫處理程序, 每次運行命令時我都必須在try塊中包圍它,就像這樣......

我認為其他答案未能解決上述問題。 當我開始使用Java編程時,當我的程序充滿了用於SQL查詢語句的try - catch塊時,我討厭它。

我解決它的方法是使用DAO級別層來處理異常。 例如,如果我的程序需要訪問User表,我創建一個UserDAO類。 然后創建查詢並在該DAO類中捕獲異常。

每次發生異常時,我都會執行所需的日志記錄並拋出一個自定義指定的Unchecked Exception ,例如DatabaseErrorException 未經檢查的異常與已檢查的異常(如SQLException )之間的主要區別在於您不會被強制catchthrow它,因此它不會使用throws語句填充您的代碼。

(是的,你可以使用throws來避免使用try - catch ,但是無論如何你必須在某個地方處理它,並考慮到你的函數在各處throws 。)

然后,我們可以在應用程序的最高級別擁有一個全局過濾器,以捕獲通過該程序傳播的所有這些異常。 通常無法恢復數據庫錯誤,因此這里我們只需要向用戶顯示錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM