2
我試圖實現一個「完整的」未捕獲的異常處理程序,允許也在Clojure中捕獲EDT異常。從Clojure Proxying Thread.UncaughtExceptionHandler
我試圖實現從接受的答案(含15個以上upvotes)類從這裏:
How can i catch Event Dispatch Thread (EDT) exceptions?
下面是我想端口部分的Clojure:
public static class ExceptionHandler implements Thread.UncaughtExceptionHandler {
public void handle(Throwable thrown) {
// for EDT exceptions
handleException(Thread.currentThread().getName(), thrown);
}
public void uncaughtException(Thread thread, Throwable thrown) {
// for other uncaught exceptions
handleException(thread.getName(), thrown);
}
protected void handleException(String tname, Throwable thrown) {
System.err.println("Exception on " + tname);
thrown.printStackTrace();
}
}
public static void main(String[] args) {
Thread.setDefaultUncaughtExceptionHandler(new ExceptionHandler());
System.setProperty("sun.awt.exception.handler",
ExceptionHandler.class.getName());
但是我卡住了。 UncaughtExceptionHandler
是Thread內定義的公共接口,我似乎無法從Clojure中進行代理。
我不知道該輸入什麼,也不知道該如何實現。
任何幫助將不勝感激,因爲我有異常,因爲他們在EDT的某個地方「丟失」(並且EDT自動修復/重新啓動),所以我似乎可以診斷出這些異常。