ホームページ > Java > &#&チュートリアル > ラムダ式内から例外をスローする

ラムダ式内から例外をスローする

Patricia Arquette
リリース: 2025-01-12 06:41:45
オリジナル
308 人が閲覧しました

ラムダでの例外のスロー

  • ラムダ式は例外をスローする可能性があります。
  • チェックされた例外の場合:
  • スローされる例外は、関数型インターフェースの抽象メソッドの throws 節にリストされている例外と互換性がある必要があります。

チェックされた例外の要件

  • ラムダがチェック例外 (IOException など) をスローする場合:
  • 関数型インターフェイスの抽象メソッドには、throws 節に同じ例外を含める必要があります。
  • この句がないと、ラムダ式はメソッドと互換性がなく、コンパイル エラーが発生します。

例: Lambda での例外スロー
コード:

import java.io.*;

interface MyIOAction {
    boolean ioAction(Reader rdr) throws IOException;
}

class LambdaExceptionDemo {
    public static void main(String args[]) {
        // Esta lambda de bloco pode lançar uma IOException.
        // A cláusula throws deve estar presente em ioAction().
        MyIOAction myIO = (rdr) -> {
            int ch = rdr.read(); // Pode lançar IOException
            // Lógica adicional pode ser inserida aqui
            return true;
        };
    }
}

ログイン後にコピー

説明:
throws 句:

  • MyIOAction 関数インターフェイスの ioAction(Reader rdr) メソッドには IOException のスローが含まれています。
  • これにより、メソッドに関連付けられたラムダが、rdr.read() などの IOException をスローする可能性のある操作を使用できるようになります。

スロー句のないエラー:

  • throws IOException 節が ioAction から削除された場合、プログラムはコンパイルされません。
  • これは、ラムダによってスローされた例外 (IOException) がメソッド内で処理または宣言されていないために発生します。

重要な注意:

  • Lambda と関数型インターフェイス間の互換性:
  • ラムダ式は、関数型インターフェイスの抽象メソッドと互換性がある必要があります。
  • チェック例外の場合、この互換性を実現するには、ラムダによってスローされた例外がメソッドの throws 句にリストされている必要があります。

実技テスト:
上記のコードの ioAction から throws 句を削除してみてください。これにより、ラムダと関数型インターフェイス メソッドとの間に互換性がないため、コンパイル エラーが発生します。

Lance uma exceção de dentro de uma expressão lambda

以上がラムダ式内から例外をスローするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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