O que acontece se System.exit é chamado de um gancho de desligamento?
Eu tenho um desligamento bastante complicado em Java - há muito trabalho de limpeza para fazer. Em particular, estou tentando descobrir como tratar erros de um thread de gancho de desligamento. Meu código inclui isso atualmente:
try {
return shutdownPromise = doShutdown();
}
catch (Throwable exc) {
logger.error("An exception was thrown while shutting down the application.", exc);
System.exit(1);
return null;
}
Quando eu originalmente escrevi isso essencialmente pensei, um erro no desligamento deve ir direto paraexit
. Masexit
não é tão baixo nível; ele chama os ganchos de desligamento.
Então eu pensei -
O que a chamada de saída de um gancho de desligamento faz?Qual é o caminho certo para o erro de lidar com um gancho de desligamento?