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

Java 8 Lambda 関数でチェックされた例外を処理する方法?

Barbara Streisand
リリース: 2025-01-04 15:01:43
オリジナル
136 人が閲覧しました

How to Handle Checked Exceptions in Java 8 Lambda Functions?

Java 8 で例外処理を行う Lambda 関数

Lambda 式を使用すると、簡潔で洗練されたコードが可能になりますが、チェック例外のサポートがありません。この制限により、例外をスローするメソッドを操作するときに問題が生じます。

次の例を考えてみましょう:

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

このメソッドへのラムダ参照はどのように定義できますか?

解決策はシナリオによって異なります。

  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);
    ログイン後にコピー

    または、curly で囲まれたラムダ式を使用できます。 braces:

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

これらのテクニックを理解することで、Java 8 でラムダ関数を使用するときにチェック例外を効果的に処理できます。

以上がJava 8 Lambda 関数でチェックされた例外を処理する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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