首頁 >Java >java教程 >從 lambda 表達式引發異常

從 lambda 表達式引發異常

Patricia Arquette
Patricia Arquette原創
2025-01-12 06:41:45311瀏覽

在 Lambda 中拋出異常

  • lambda 表達式可以引發異常。
  • 對於已檢查的異常:
  • 拋出的異常必須與函數介面抽象方法的 throws 子句中列出的異常相容。

檢查異常的要求

  • 如果 lambda 拋出檢查異常(例如 IOException):
  • 函數式介面的抽象方法必須在 throws 子句中包含相同的異常。
  • 如果沒有這個子句,lambda 表達式將與該方法不相容,並會導致編譯錯誤。

範例: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;
        };
    }
}

說明:
拋出子句:

  • MyIOAction 功能介面中的 ioAction(Reader rdr) 方法包含拋出 IOException。
  • 這允許與該方法關聯的 lambda 使用可以拋出 IOException 的操作,例如 rdr.read()。

沒有 throws 子句的錯誤:

  • 如果從 ioAction 中刪除 throws IOException 子句,程式將無法編譯。
  • 出現這種情況是因為 lambda 引發的異常 (IOException) 未在方法中處理或聲明。

重要提示:

  • Lambda 與函數式介面之間的相容性:
  • lambda 表達式必須與函數式介面的抽象方法相容。
  • 對於受檢異常,這種相容性要求 lambda 拋出的異常在方法的 throws 子句中列出。

實際檢定:
嘗試從上面程式碼中的 ioAction 中刪除 throws 子句。由於 lambda 和函數式介面方法不相容,這將導致編譯錯誤。

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

以上是從 lambda 表達式引發異常的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn