Tidak boleh mendapatkan ArrayIndexOutOfBoundsException daripada Future> dan SwingWorker if thread starts Executor
SwingWorker tidak mendedahkan sebarang cara untuk mendapatkan pengecualian asas. Walau bagaimanapun, memandangkan SwingWorker menyediakan cara untuk melengkapkan dengan hasil menggunakan kaedah done(), anda boleh membuang semula pengecualian di sini, di mana ia akan ditangkap oleh pemanggil kaedah get() pada Masa Depan.
// ... @Override protected void done() { if (str.equals("StartShedule")) { try { get(); } catch (InterruptedException ie) { ie.printStackTrace(); } catch (ExecutionException ee) { throw (ee).getCause(); } } }
Atas ialah kandungan terperinci Bagaimana Mengendalikan Pengecualian yang Dilemparkan oleh Masa Depan SwingWorker?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!