首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Java 方法需同時返回布林結果與異常資訊的最佳實踐

     編輯:程式設計綜合問答

常見需求

方法執行成功回傳 true,失敗回傳 false 並攜帶異常細節(如驗證錯誤、業務異常)。

方案比較

方案優點缺點適用場景
自訂 Result 物件型別安全、可攜帶任意資料、可擴展需定義額外類別企業級專案、統一錯誤處理
Vavr Try<T> / Either<L, R>函數式風格、鏈式操作、無副作用引入第三方庫、學習曲線函數式導向專案
Map<String, Object> 或 Object[]無需新類別、快速原型型別不安全、鍵名易拼錯、維護困難臨時腳本、舊代碼改造
Out 參數(傳入可變容器)不改變回傳型別破壞純函數、執行緒不安全、易誤用極少數效能敏感場景

推薦:統一 Result 模式

public class Result<T> {
    private boolean success;
    private T data;
    private String errorCode;
    private String errorMsg;
    // getter/setter、靜態工廠方法 success(T), fail(code, msg)
}

// 使用範例
public Result<User> login(String username, String password) {
    if (valid) return Result.success(user);
    return Result.fail("AUTH_001", "帳號或密碼錯誤");
}

優勢

  • 編譯期型別檢查,避免 ClassCastException。
  • 統一錯誤碼體系,便於前端國際化與監控告警。
  • 支援鏈式處理:result.onSuccess(u -> ...).onFail(e -> ...)。

若專案已引入 Vavr,Try.of(() -> riskyOperation()) 也是優雅選擇。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved