SwingWorker 和 Executor 中 ArrayIndexOutOfBoundsException 的問題
為了捕捉 ArrayIndexOutOfBoundsException,可以在 SwingWorker 的 done() 方法中從 Future#get() 重新拋出這個例外。
修改後的程式碼片段
@Override protected void done() { try { get(); } catch (InterruptedException | ExecutionException ie) { ie.printStackTrace(); } catch (IllegalStateException is) { is.printStackTrace(); } }
完整程式碼
// ... @Override protected void done() { if (str.equals("StartShedule")) { try { get(); } catch (InterruptedException | ExecutionException ie) { ie.printStackTrace(); } catch (IllegalStateException is) { is.printStackTrace(); } } }
完整程式碼如下:
使用此修改後,即使未註解掉導致異常的程式碼,也能擷取到ArrayIndexOutOfBoundsException。以上是如何在 SwingWorker 和 Executor 線程中捕獲 ArrayIndexOutOfBoundsException?的詳細內容。更多資訊請關注PHP中文網其他相關文章!