ホームページ > Java > &#&チュートリアル > Java 8 でラムダ式を使用するときにチェックされた例外を処理するにはどうすればよいですか?

Java 8 でラムダ式を使用するときにチェックされた例外を処理するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-27 20:06:14
オリジナル
937 人が閲覧しました

How Can I Handle Checked Exceptions When Using Lambda Expressions in Java 8?

Java 8 の Lambda 関数への例外の統合

Java 8 では、ラムダ式によりメソッド参照を表す簡潔な方法が提供されます。ただし、チェック例外をスローする可能性のあるメソッドに遭遇すると、デフォルトのラムダ構文では不十分になります。

Lambda 関数による例外への挑戦

次のメソッドを検討してください:

Integer myMethod(String s) throws IOException
ログイン後にコピー

構文 Functionラムダは潜在的なチェック例外を考慮していないため、失敗します。

Lambda 関数での例外の処理

この問題を解決するには、いくつかのアプローチが利用可能です。

1.カスタム関数インターフェイスを定義します:

メソッドが制御下にある場合は、チェック例外を宣言するカスタム関数インターフェイスを定義することをお勧めします:

@FunctionalInterface
public interface CheckedFunction<T, R> {
   R apply(T t) throws IOException;
}
ログイン後にコピー

このインターフェイスは次のようになります。ラムダ型として使用されます:

void foo (CheckedFunction<String, Integer> 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);
ログイン後にコピー

3. Lambda 内で例外を処理する:

または、Lambda 自体内で例外を処理することもできます:

Function<String, Integer> f =
    (String t) -> {
        try {
           return myMethod(t);
        }
        catch(IOException e) {
            throw new UncheckedIOException(e);
        }
    };
ログイン後にコピー

以上がJava 8 でラムダ式を使用するときにチェックされた例外を処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート