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!