我正在尝试实现一个“完整的”未捕获异常处理程序,允许在 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
是一个在 Thread 内部定义的公共接口,我似乎无法从 Clojure 代理它。
我不知道要导入什么,也不知道如何实现。
任何帮助将不胜感激,因为我似乎可以诊断出异常,因为它们在 EDT 的某个地方“丢失”(并且 EDT 会自动修复/重新启动)。