InvocationTargetException Ralat dalam Java
Apabila bekerja dengan Java reflection, seseorang mungkin menghadapi isu membingungkan java.lang.reflect.InvocationTargetException sedang dilemparkan apabila pengecualian khusus telah dijangkakan. Seperti yang ditunjukkan dalam coretan kod di bawah, permohonan kaedah yang harus mencetuskan ArrayIndexOutOfBoundsException menghasilkan InvocationTargetException sebaliknya:
try{ .. m.invoke(testObject); .. } catch(AssertionError e){ ... } catch(Exception e){ .. }
Transformasi Misterius
Sebab untuk ini tingkah laku yang tidak dijangka terletak pada sifat refleksi. Dengan menggunakan kaedah melalui refleksi, lapisan abstraksi tambahan diperkenalkan. Lapisan ini membalut sebarang pengecualian yang berlaku semasa invocation dalam InvocationTargetException. Ini membolehkan pengaturcara membezakan antara pengecualian yang terhasil daripada panggilan refleksi yang gagal dan pengecualian yang berasal dari kaedah yang digunakan.
Menyingkap Pengecualian Benar
Untuk menyelesaikan isu ini dan menentukan pengecualian sebenar yang dilemparkan, seseorang mesti menyelidiki InvocationTargetException dan membongkar punca asasnya. Ini boleh dicapai dalam beberapa cara:
Setelah pengecualian sebenar dikenal pasti, ia boleh dikendalikan atau semula -dilemparkan seperlunya.
Kesimpulan
Memahami akibat refleksi dan tingkah laku InvocationTargetException adalah penting untuk penyahpepijatan dan pengendalian pengecualian yang berkesan di Java. Dengan membuka punca asas dan bertindak sewajarnya, pembangun boleh mengelakkan kekeliruan dan memastikan kod mereka bertindak balas dengan betul kepada pengecualian.
Atas ialah kandungan terperinci Apabila Refleksi dalam Java Masks Exceptions: Membongkar InvocationTargetException. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!