ホームページ >Java >&#&チュートリアル >Java 8 ラムダ式でチェックされた例外を処理する方法?

Java 8 ラムダ式でチェックされた例外を処理する方法?

DDD
DDDオリジナル
2024-12-30 11:10:09513ブラウズ

How to Handle Checked Exceptions in Java 8 Lambda Expressions?

Java 8 の例外を伴う Lambda 関数

Java 8 では、ラムダ関数を使用して特定のシグネチャを持つメソッドを参照できます。ただし、参照されるメソッドがチェック例外を宣言する場合、ラムダ参照の定義は困難になる可能性があります。

問題

引数として文字列を受け取り、 Integer を返しますが、IOException をスローする場合があります:

Integer myMethod(String s) throws IOException

このメソッドへのラムダ参照?

解決策

ラムダ参照で例外を処理するには、主に 2 つのアプローチがあります。

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 ラムダ式でチェックされた例外を処理する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。