Abortar um projeto

Boa Tarde!

Desenvolvi meu primeiro projetinho em Spring (batch). O processo em si esta ok. Porém foi pedido uma coisa que eu não sei e gostaria da ajuda de vocês.

Dentro de um método há algumas verificações e se por acaso não existir o diretório, é lançada a mensagem num arquivo de log e o projetinho tem que ser abortado, tem que parar tudo.

Abaixo a parte da codificação aonde preciso abortar:

} else { LOG.error("Lote não pode ser atualizado! "); //nesse ponto loga a mensagem de erro e depois o sistema tem que cair, como faço isso? }

Agradeço desde já!


System.exit(0);

isso ira parar com a execucao do programa isso que voce quer ?

[quote=CristianPalmaSola10][code]

System.exit(0);

[/code]

isso ira parar com a execucao do programa isso que voce quer ?[/quote]

Obrigada Cristian!! Irei testar.

[quote=izaura]Boa Tarde!

Desenvolvi meu primeiro projetinho em Spring (batch). O processo em si esta ok. Porém foi pedido uma coisa que eu não sei e gostaria da ajuda de vocês.

Dentro de um método há algumas verificações e se por acaso não existir o diretório, é lançada a mensagem num arquivo de log e o projetinho tem que ser abortado, tem que parar tudo.

Abaixo a parte da codificação aonde preciso abortar:

} else { LOG.error("Lote não pode ser atualizado! "); //nesse ponto loga a mensagem de erro e depois o sistema tem que cair, como faço isso? }

Agradeço desde já![/quote]

O “sistema tem que cair” é um pouco estranho. Sistema bem feitos não caem. Acho que vc quer dizer “sair”. Ou seja, vc quer terminar a execução do sistema (não do projeto. aborta o projeto é um conceito completamente diferente de terminar o programa)
Como já foi dito, o System.exit() é a forma de terminar o programa, mas apenas se ele é standalone.

Seguinde a boa velha regra de “uma entrada, uma saida” o System.exit() é o contra-ponto do método main onde o programa começa.
Então a melhor prática aqui é não fazer o System.exist no else, mas sim lançar uma exceção. Depois tratar a exceção num nivel superior da aplicação, e então ai sim, dar o exit().

Pode parece que vai dar no mesmo, mas não vai. Saber exactamente onde o System.exit() é invocado é muito importante e invocá-lo a torto e a direito no meio do código pode levar o programa a terminar mesmo quando vc não espera ( por causa de algum if que está mal implementado).

Estude sobre exceções, que são mais uteis que o System.exit e podem ser usadas mesmo quando o sistema não corre standalone.

Acredito que nesse caso não seria certo chegar a usar o System.exit()
Como está sendo usado spring batch para coordenar o job então o melhor é utilizar recursos do próprio framework para interromper o processo. Só ele vai saber encerrar corretamente as threads, desalocar os objetos, não interromper transações pela metade, etc.

Como o Sérgio disse, “System.exit() é o contra-ponto do método main onde o programa começa” então baseado nesse mesmo raciocínio se você não escreveu o main() então não deveria escrever o System.exit().