InvocationTargetException ialah kelas pengecualian dalam bahasa pengaturcaraan Java, digunakan untuk mewakili pengecualian yang berlaku semasa permohonan kaedah. Apabila menggunakan mekanisme refleksi untuk memanggil kaedah atau pembina, jika kaedah yang dipanggil atau pembina itu sendiri melemparkan pengecualian, tetapi segmen kod yang memanggil kaedah invoke() tidak menangkap pengecualian, kaedah invoke() akan merangkum pengecualian. dalam InvocationTargetException dan buangnya.
InvocationTargetException ialah kelas pengecualian dalam bahasa pengaturcaraan Java, digunakan untuk mewakili pengecualian yang berlaku semasa permohonan kaedah. Ia dilemparkan oleh kelas Kaedah dalam pakej java.lang.reflect dan kaedah invoke() dalam kelas Pembina dan digunakan untuk memanggil kaedah atau pembina lain.
Apabila menggunakan mekanisme pantulan untuk memanggil kaedah atau pembina, jika kaedah yang dipanggil atau pembina itu sendiri melemparkan pengecualian, tetapi segmen kod yang memanggil kaedah invoke() tidak menangkap pengecualian ini, maka kaedah invoke() akan The pengecualian dirangkumkan dalam InvocationTargetException dan dibuang.
InvocationTargetException ialah pengecualian yang diperiksa, yang mewarisi daripada kelas ReflectiveOperationException dalam pakej java.lang.reflect, yang mewarisi daripada kelas java.lang.Exception. Ini bermakna apabila menulis kod, kita mesti mengendalikan atau mengisytiharkan pengecualian secara eksplisit.
InvocationTargetException mengandungi atribut sebab, yang menunjukkan sebab yang menyebabkan pengecualian dilemparkan apabila memanggil kaedah sasaran atau pembina. Dengan memanggil kaedah getCause() InvocationTargetException, kami boleh mendapatkan pengecualian asal dan menganalisis dan memprosesnya lagi.
Biasanya, apabila menggunakan refleksi untuk memanggil kaedah atau pembina, jika fungsi sasaran melemparkan pengecualian yang diperiksa, kita boleh mengendalikan pengecualian ini dengan menangkap InvocationTargetException. Selepas menangkap InvocationTargetException, kita boleh mendapatkan pengecualian sebenar dengan memanggil kaedah getCause() dan mengendalikannya dengan sewajarnya mengikut logik perniagaan tertentu.
Berikut ialah contoh yang menunjukkan cara menggunakan InvocationTargetException untuk mengendalikan pengecualian:
try { // 获取目标方法 Method method = MyClass.class.getMethod("myMethod"); // 调用目标方法 method.invoke(new MyClass()); } catch (InvocationTargetException e) { // 获取原始异常 Throwable cause = e.getCause(); // 根据实际业务逻辑处理异常 if (cause instanceof MyException) { // 处理MyException异常 } else { // 处理其他异常 } } catch (NoSuchMethodException | IllegalAccessException e) { // 处理其他异常 }
Dalam contoh di atas, jika kaedah sasaran myMethod membuang MyException, maka InvocationTargetException akan merangkum pengecualian ini apabila kaedah invoke() dipanggil. dan membuang. Kita boleh mendapatkan pengecualian MyException asal dengan menangkap InvocationTargetException dan memanggil kaedah getCause() dan mengendalikannya mengikut logik perniagaan sebenar.
Ringkasan
InvocationTargetException ialah kelas pengecualian yang digunakan untuk mewakili pengecualian yang berlaku apabila kaedah atau pembina dipanggil secara reflektif. Ia merangkum pengecualian yang dilemparkan oleh kaedah sasaran atau pembina dan menyediakan mekanisme untuk mengendalikan pengecualian ini.
Atas ialah kandungan terperinci Apakah itu InvocationTargetException. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!