Eaê, galera, blz?
Tô implementando um sistema que lê informações de uma página da web e as grava numa base de dados local. No entanto, esse processo pode ser muito de demorado e, na minha aplicação, eu dou ao usuário a opção de interromper o processo no meio da execução. O problema disso é que eu não tinha como parar o processo do nada, daí, toda vez que encerrava o processo gerava uma exceção.
Para resolver isso, passei a utilizar Threads. Agora, para encerrar o processo, eu uso o método stop(). Isso me leva à primeira pergunta:
- A documentação me diz que o método stop() está superado e que ele é perigoso. Mas, se eu utilizo threads com o único fim de poder encerrar o processo quando eu quiser, qual método devo utilizar/sobrescrever para garantir uma saída limpa?
O uso de threads me levou a um outro problema… Todos os métodos do meu importador lançam as exceções para o método chamador sem tratá-las. Esse tratamento de exceções eu fazia na minha interface gráfica, mostrando mensagens ao usuário e tomando atitudes. O problema é que, ao encapsular parte da minha lógica numa Thread, eu fico obrigado a tratar as exceções dentro do método run(), já que ele não lança exceções. Tentei inclusive pegar as exceções dentro do método e lançar uma RuntimeException, no entanto, esse tipo de exceção não pode ser capturada. Assim, minha segunda pergunta é:
- Como eu faço para lançar uma exceção de dentro de uma thread, de modo que eu possa capturá-la fora da thread?
Obrigado pela atenção!