Rumah > Java > javaTutorial > Bagaimanakah Saya Boleh Mengendalikan Pengecualian yang Disemak dalam Ungkapan Lambda Java 8?

Bagaimanakah Saya Boleh Mengendalikan Pengecualian yang Disemak dalam Ungkapan Lambda Java 8?

DDD
Lepaskan: 2024-12-16 21:22:19
asal
385 orang telah melayarinya

How Can I Handle Checked Exceptions in Java 8 Lambda Expressions?

Mengendalikan Pengecualian dalam Java 8 Fungsi Lambda

Apabila membuat rujukan kepada kaedah menggunakan ungkapan lambda, adalah penting untuk mempertimbangkan pengendalian pengecualian. Jenis rujukan fungsi lalai tidak menyokong pengecualian yang diperiksa, seperti yang memanjangkan IOException.

Untuk menangani isu ini, terdapat dua pendekatan:

1. Mentakrifkan Antara Muka Fungsi Tersuai

Jika kod berada di bawah kawalan anda, anda boleh mencipta antara muka fungsi tersuai yang mengisytiharkan pengecualian yang disemak secara eksplisit:

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

Kemudian, gunakan tersuai antara muka untuk menentukan rujukan fungsi anda:

void foo(CheckedFunction<String, Integer> f) { ... }
Salin selepas log masuk

2. Membungkus Kaedah Bertanda

Jika anda tidak mempunyai kawalan ke atas kaedah yang disemak, anda boleh membungkusnya dalam kaedah 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

Dengan kaedah dibungkus, anda boleh mencipta rujukan fungsi seperti berikut:

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

Sebagai alternatif, anda boleh menggunakan ungkapan lambda dengan pengecualian blok pengendalian:

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

Dengan menggunakan teknik ini, anda boleh mengendalikan pengecualian yang disemak dengan anggun dalam fungsi Java 8 lambda, memastikan kod anda kekal teguh dan selamat pengecualian.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengendalikan Pengecualian yang Disemak dalam Ungkapan Lambda Java 8?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan