Groovy 有问题,如果在脚本中抛出未捕获的异常,我需要在退出之前进行一些清理,但找不到解决方法。
我试过Thread.setDefaultUncaughtExceptionHandler,但似乎它不适用于主线程。然后,我查看了堆栈跟踪,它把我带到了 GroovyStarter,在那里我发现了一段不错的代码,这意味着Thread.setDefaultUncaughtExceptionHandler并不真正应该工作:
public static void main(String args[]) {
try {
rootLoader(args);
} catch (Throwable t) {
t.printStackTrace();
}
}
只是为了举例,这里是我想要存档的(这不是可运行的脚本,只是为了展示这个概念):
def process = new ProcessBuilder(command).redirectErrorStream(true).start();
onException = {
process.destroy()
}
请不要建议使用 try/catch,这是我自己能想到的 :)
PS:我是 Groovy 的新手,所以可能会遗漏一些明显的东西。