Memahami Punca java.lang.reflect.InvocationTargetException
Apabila menggunakan refleksi untuk menggunakan kaedah, ia adalah perkara biasa untuk menghadapi InvocationTargetException bukannya pengecualian yang dijangkakan yang dilemparkan oleh kaedah yang digunakan. Tingkah laku ini disebabkan oleh tahap pengabstrakan tambahan yang diperkenalkan oleh refleksi.
Apabila menggunakan kaedah melalui refleksi, pengecualian dibalut dalam objek InvocationTargetException. Ini membolehkan pembangun membezakan antara pengecualian yang berasal daripada panggilan refleksi (argumen tidak sah, dll.) dan yang berlaku dalam kaedah yang digunakan.
Untuk mendapatkan pengecualian asal, seseorang mesti membukanya daripada InvocationTargetException. Ini boleh dicapai dengan mendapatkan sebab menggunakan kaedah getCause(), atau dengan memeriksa bahagian "Disebabkan Oleh:" apabila memanggil exception.printStackTrace() . Pengecualian asal kemudiannya boleh dikendalikan atau dilemparkan semula dengan sewajarnya.
Dengan menggunakan teknik ini, pembangun boleh mengendalikan pengecualian yang timbul dengan berkesan semasa penggunaan kaedah menggunakan refleksi, memastikan keadaan ralat yang sesuai ditangani.
Atas ialah kandungan terperinci Mengapa Anda Mendapat java.lang.reflect.InvocationTargetException Apabila Menggunakan Reflection?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!