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 の初心者なので、いくつかの明白なものが欠けている可能性があります。