Swing 从Clojure代理Thread.UncaughtExceptionHandler

Swing 从Clojure代理Thread.UncaughtExceptionHandler,swing,exception,clojure,event-dispatch-thread,Swing,Exception,Clojure,Event Dispatch Thread,我试图实现一个“完整的”未捕获异常处理程序,允许在Clojure中捕获EDT异常 我正试图从这里实现接受答案(15票以上)中的类: 以下是我想向Clojure介绍的部分: public static class ExceptionHandler implements Thread.UncaughtExceptionHandler { public void handle(Throwable thrown) { // for EDT exceptions han

我试图实现一个“完整的”未捕获异常处理程序,允许在Clojure中捕获EDT异常

我正试图从这里实现接受答案(15票以上)中的类:

以下是我想向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
是线程内部定义的公共接口,我似乎无法从Clojure代理它

我不知道导入什么,也不知道如何实现


任何帮助都将不胜感激,因为我有一些异常,我似乎可以诊断,因为它们在EDT中的某个位置“丢失”(并且EDT自动修复/重新启动)。

使用
具体化
来实现
线程$UncaughtExceptionHandler
。来自Java的内部类和接口被命名为类文件

(def h (reify Thread$UncaughtExceptionHandler    
  (uncaughtException [this t e] 
    (println t ": " e))))  
见: