Swing 从Clojure代理Thread.UncaughtExceptionHandler
我试图实现一个“完整的”未捕获异常处理程序,允许在Clojure中捕获EDT异常 我正试图从这里实现接受答案(15票以上)中的类: 以下是我想向Clojure介绍的部分: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
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))))
见: