Groovy에 문제가있어서 스크립트에서 캐치되지 않는 예외가 발생했지만 종료하기 전에 정리를해야합니다.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()
}
/캐치하려고 사용하는 것이 좋습니다하지 마십시오 :) : 여기 예제의 난 (단지 개념을 보여주기 위해,이 실행 가능한 스크립트 없음) 보관할 것입니다
P S : 저는 Groovy의 초보자입니다. 그래서 명백한 것들을 놓칠 수 있습니다. 당신이 필요하므로 항상 종료 훅 이 실행되는 프로그램이 정상적으로 종료 되더라도 것을
def process = new ProcessBuilder(command).redirectErrorStream(true)
boolean success = false
def cleanup = {
success = true
process.destroy()
}
addShutdownHook {
if(!success && process) {
cleanup()
}
}
process.start()
// alternatively, always rely on the shutdown hook
cleanup()
참고 :
이것은 나를 위해 작동합니다. 고맙습니다! – Stas