簡體   English   中英

將異常作為參數傳遞給 java 中的方法是不好的做法嗎

[英]Is it bad practice to pass exception as argument to a method in java

如果服務中發生異常,我有一個應該回滾的方法。 在異常塊中,回滾服務在失敗時會拋出異常。 我為回滾創建了一個服務,但我將異常作為參數傳遞給第二種方法。 這是不好的做法嗎?

public static void method1() {
    try{
       //do something that can throw exception
    } catch (Exception e) {
         method2(data, e);
      }
}

public static void method2(String data, CustomException ce) {
    try{
     // rollback service that could fail
    } catch(Exception e) {
        log.warn("rollback failed!!!");
         ce.addSuppressed(e);
      }
 }

歸根結底, Exception是普通的 Java 對象,具有可以拋出的附加屬性。 如果我們拒絕將Exception s 作為參數,例如,它將失去為Exception s 提供集中處理程序方法的能力(例如,在JavaEE 的ExceptionMapper中發現的一個概念)。 如果我們拒絕使用Exception作為參數,我們很可能會違反DRY 原則,也很可能違反Separation of Concerns 原則 這兩者都可能導致更難閱讀和維護代碼。

此外,如果我們的方法之一接受Object (或Object...Collection<Object> ,...)作為參數,我們無法防止Exception作為參數傳遞。

總之,我認為沒有理由將Exception作為方法參數傳遞是一種不好的做法。

暫無
暫無

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

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