Rumah > Java > javaTutorial > Bagaimana untuk Mengendalikan Pengecualian yang Diperiksa dalam Fungsi Java 8 Lambda?

Bagaimana untuk Mengendalikan Pengecualian yang Diperiksa dalam Fungsi Java 8 Lambda?

Barbara Streisand
Lepaskan: 2025-01-04 15:01:43
asal
136 orang telah melayarinya

How to Handle Checked Exceptions in Java 8 Lambda Functions?

Fungsi Lambda dengan Pengendalian Pengecualian dalam Java 8

Ekspresi Lambda mendayakan kod ringkas dan elegan, tetapi mereka tidak mempunyai sokongan untuk pengecualian yang diperiksa. Had ini menimbulkan cabaran apabila menggunakan kaedah yang membuang pengecualian.

Pertimbangkan contoh berikut:

Integer myMethod(String s) throws IOException
Salin selepas log masuk

Bagaimanakah anda boleh mentakrifkan rujukan lambda kepada kaedah ini?

Penyelesaiannya bergantung pada senario:

  1. Tentukan a Antara Muka Fungsi Tersuai dengan Pengecualian Ditanda:

    Jika anda mempunyai kawalan ke atas kod, anda boleh mencipta antara muka fungsi tersuai yang mengisytiharkan pengecualian yang diperiksa:

    @FunctionalInterface
    public interface CheckedFunction<T, R> {
        R apply(T t) throws IOException;
    }
    Salin selepas log masuk

    Kemudian, gunakan ini antara muka dalam kod anda:

    void foo(CheckedFunction<String, Integer> f) { ... }
    Salin selepas log masuk
  2. Balutkan Kaedah dalam Tanpa Pengecualian Versi:

    Jika anda tidak boleh mengubah suai kaedah, bungkusnya dengan kaedah baharu yang tidak mengisytiharkan pengecualian yang ditandai:

    public Integer myWrappedMethod(String s) {
        try {
            return myMethod(s);
        } catch (IOException e) {
            throw new UncheckedIOException(e);
        }
    }
    Salin selepas log masuk

    Kemudian, buat rujukan lambda:

    Function<String, Integer> f = (String t) -> myWrappedMethod(t);
    Salin selepas log masuk

    Sebagai alternatif, anda boleh menggunakan ungkapan lambda yang disertakan dalam kerinting pendakap:

    Function<String, Integer> f =
        (String t) -> {
            try {
               return myMethod(t);
            } catch (IOException e) {
                throw new UncheckedIOException(e);
            }
        };
    Salin selepas log masuk

Dengan memahami teknik ini, anda boleh mengendalikan pengecualian yang disemak dengan berkesan semasa menggunakan fungsi lambda dalam Java 8.

Atas ialah kandungan terperinci Bagaimana untuk Mengendalikan Pengecualian yang Diperiksa dalam Fungsi Java 8 Lambda?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan