首頁 >Java >java教程 >如何處理 Java 8 Lambda 表達式中的檢查異常?

如何處理 Java 8 Lambda 表達式中的檢查異常?

DDD
DDD原創
2024-12-30 11:10:09513瀏覽

How to Handle Checked Exceptions in Java 8 Lambda Expressions?

Java 8 中帶有異常的 Lambda 函數

在 Java 8 中,lambda 函數可用於引用具有特定簽名的方法。但是,當引用的方法聲明受檢查的異常時,定義 lambda 引用可能具有挑戰性。

問題

考慮以下方法,該方法採用String 作為參數,並且傳回一個Integer,但可能會拋出IOException:

Integer myMethod(String s) throws IOException

我們如何定義對此的lambda 引用方法?

解決方案

處理 lambda引用中的異常主要有兩種方法:

1.自訂功能介面

如果您可以控製程式碼,您可以定義一個聲明已檢查異常的自定義功能介面:

@FunctionalInterface
public interface CheckedFunction<T, R> {
   R apply(T t) throws IOException;
}

這允許您建立對方法的參考拋出檢查異常:

void foo (CheckedFunction f) { ... }

2.包裝在非檢查方法

如果無法更改方法簽名,您可以將檢查方法包裝在不聲明檢查異常的方法:

public Integer myWrappedMethod(String s) {
    try {
        return myMethod(s);
    }
    catch(IOException e) {
        throw new UncheckedIOException(e);
    }
}

然後您可以引用包裝的方法:

Function<String, Integer> f = (String t) -> myWrappedMethod(t);

以上是如何處理 Java 8 Lambda 表達式中的檢查異常?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn