Bom, se eu tenho uma exceção que herda de RunTimeException eu posso fazer tranquilamente o “throw new MinhaException(‘ocorreu o meu erro’);”
Porém, caso eu faça “throw new Exception(‘Ocorreu um erro mais genérico’)” ele exige que eu faça um try-catch ou throws. Mas o que eu não entendo
é o seguinte: esse try-catch não deveria ser feito no método que vai receber a exception ? Porque ele pede para eu fazer no mesmo método ?
Dúvida Exceptions
R
4 Respostas
Bom, se eu tenho uma exceção que herda de RunTimeException eu posso fazer tranquilamente o “thrownew MinhaException(‘ocorreu o meu erro’);”
Porém, caso eu faça “thrownew Exception(‘Ocorreu um erro mais genérico’)” ele exige que eu faça um try-catch ou throws. Mas o que eu não entendo
é o seguinte: esse try-catch não deveria ser feito no método que vai receber a exception ? Porque ele pede para eu fazer no mesmo método ?
Tanto o compilador quanto a JVM não sabem se aquele método onde a exceção pode ocorrer ou está ocorrendo é o local adequado para tratá-la.
Além disso, você pode ter uma série de coisas a fazer caso ocorra uma exceção.
Por exemplo, imagine que você está fazendo a leitura de um arquivo presente em um servidor remoto, processando o conteúdo do mesmo e enviando para um WebService. Caso o WS apresente alguma falha, você captura a exceção e salva localmente o que estava sendo feito, para, então, disparar a exception com o throws. Isso te permite retomar o que estava fazendo quando a rotina for solicitada novamente, do ponto onde parou e não refazer tudo o que havia sido feito antes da ocorrência do erro.
R
Não ficou bem claro pela seguinte questão: Se a MinhaException é unchecked e o Exception (mais genérico) é checked.
Porque quando eu faço um catch(Exception e) eu pego tanto as unchecked como as checked ?
Com uma checked exception ele te dá DUAS opções:
a) Fazer um catch no mesmo método OU
b) Repassar a exceção para o método de cima usando throws na declaração da função.
No caso da RuntimeException, a diferença é que você está dispensado de dizer explicitamente na assinatura do método que essa exceção é lançada.
R
Obrigado pelas explicações.
Criado 13 de agosto de 2013
Ultima resposta 13 de ago. de 2013
Respostas 4
Participantes 3
Alura Git Flow: entenda o que é, como e quando utilizar Entenda o que é Git Flow, como funciona seu fluxo com branches como Master, Develop, Feature, Release e Hotfix, além de vantagens e desvantagens.
Casa do Codigo Ontologias e Web Semantica: Do conceito a aplicacao Por Ivam Galvao Filho — Casa do Codigo