Java 8 Lambda 関数での例外の処理
ラムダ式を使用してメソッドへの参照を作成する場合、例外の処理を考慮することが重要です。デフォルトの関数参照型は、IOException を拡張する例外などのチェック例外をサポートしていません。
この問題に対処するには、次の 2 つの方法があります。
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);
または、例外処理を伴うラムダ式を使用することもできます。 block:
Function<String, Integer> f = (String t) -> { try { return myMethod(t); } catch (IOException e) { throw new UncheckedIOException(e); } };
これらの手法を使用すると、Java 8 ラムダ関数でチェック例外を適切に処理でき、コードの堅牢性と例外安全性を確保できます。
以上がJava 8 ラムダ式でチェックされた例外を処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。