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
DDDasal
2024-12-16 21:22:19387semak imbas

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;
}

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

void foo(CheckedFunction<String, Integer> f) { ... }

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);
  }
}

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

Function<String, Integer> f = (String t) -> myWrappedMethod(t);

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);
    }
  };

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!

Kenyataan:
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