| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/12/2006 09:30:43
|
cezarsg
JavaChild
Membro desde: 28/04/2003 09:57:38
Mensagens: 129
Localização: curitiba
Offline
|
Pessoal, estou com uma dúvida sobre o tratamento de exceção. Quando vc precisa verificar se uma variável está null, pode-se lançar NullPointerException do meio de um método???
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/12/2006 09:34:12
|
afdestro
JavaTeenager
Membro desde: 25/06/2006 13:35:37
Mensagens: 196
Localização: Joinville - SC
Offline
|
vc pode colocar um try/catch onde achar necessário..
porém uma variável estar null não lança exception..
a nao ser que tente usa-la é claro..
vc pode colocar dentro do bloco try
ou lançar para a classe pai com throws...
;D
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/12/2006 09:52:05
|
davidhc
JavaEvangelist
Membro desde: 26/07/2006 09:11:47
Mensagens: 359
Offline
|
Coloca tipo
Assim vc vai estar tratando os possíveis erros!
Espero ter ajudado
[]'s
|
talvez esteja tão vazio =o |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/12/2006 11:15:43
|
Fabio Kung
JavaEvangelist
Membro desde: 08/03/2004 08:24:47
Mensagens: 445
Localização: São Paulo
Offline
|
http://blog.caelum.com.br/2006/10/07/lidando-com-exceptions/
|
Procurando por oportunidades de emprego?
OndeTrabalhar.com
OndeTrabalhar.com Java?
http://blog.caelum.com.br
Fabio Kung
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/12/2006 12:06:19
|
MARCOS ALEXANDRE
Debugger
![[Avatar]](/images/avatar/d9d838896ca0a5e16e7efa2439943fbd.jpg)
Membro desde: 23/09/2006 15:40:48
Mensagens: 54
Localização: RIO DE JANEIRO
Offline
|
Eu costumo fazer isto:
try{
//se correr bem retorna true;
}catch(){
//se não false
}
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/12/2006 13:35:48
|
cezarsg
JavaChild
Membro desde: 28/04/2003 09:57:38
Mensagens: 129
Localização: curitiba
Offline
|
eu gostaria de lançar uma exceção qdo uma objeto dentro de um método fosse null.
Pelo que li no link do Fabio Kung, então é correto eu lançar uma NullPointerException como neste exemplo abaixo, certo?
Neste caso, não preciso mesmo encapsular o problema numa exceção minha, certo?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/12/2006 13:55:48
|
afdestro
JavaTeenager
Membro desde: 25/06/2006 13:35:37
Mensagens: 196
Localização: Joinville - SC
Offline
|
certo..
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/12/2006 19:00:44
|
Fabio Kung
JavaEvangelist
Membro desde: 08/03/2004 08:24:47
Mensagens: 445
Localização: São Paulo
Offline
|
Se esse seu objeto foi algum parâmetro que você recebeu no método, eu jogaria uma IllegalArgumentException.
NullPointerException me parece genérico demais. Seria melhor uma exceção mais específica ao seu caso, dizendo claramente a causa do problema.
|
Procurando por oportunidades de emprego?
OndeTrabalhar.com
OndeTrabalhar.com Java?
http://blog.caelum.com.br
Fabio Kung
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/12/2006 20:46:02
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
Se tem uma dica vital em sistemas é:
Trate as exceções corretamente.
Não as ignore, não converta as exceções para códigos de erro, você estará descartando informações importantes. Trate-as.
Pense no que você deve fazer a respeito da exceção. Se ela não for adequada a sua abstração, você tem três saídas:
1. Coloque um throws e deixe que o cliente de sua classe a trate;
2. Converta a exceção em uma outra mais adequada com a seguinte técnica:
3. Se você acha que a exceção não vai ocorrer, não arrisque. Faça o seguinte:
Você não será obrigado a tratar a RuntimeException. Não precisa colocar throws para elas. E, se a runtime exception estourar, você terá o stack trace completo de quando ela aconteceu, que métodos foram chamados, etc.
Ignorar exceções é simplesmente péssimo. Ele faz seu sistema ignorar as exceções, o que gera instabilidade ao longo do tempo. O sistema continua prossegue a execução, gerando classes com estados inválidos. Ele também pode silenciosamente ignorar um erro, que pode levar dias, meses para ser descobertos e, quando for, pode ter feito um grande estrago.
O código do davidhc é interessante, exceto pelo fato de que não se deve capturar a Exception genérica. Se ele estava dando a dica 2, ok. Mas lembre-se capturar o tipo Exception vai capturar também as runtime exceptions. Dar throw em uma exception genérica também é péssimo e pode causar mais mal do que bem. Escolha a exceção certa para o seu caso, que esteja de acordo com a sua biblioteca, crie a exceção se necessário.
O código do Marcos Alexandre é um pouco melhor, mas ele perde muita informação do stack trace. Pode ser usado se a sua classe garante o tratamento da exceção adequado, gerando o boolean em pouquissimos casos bem específicos. Ainda assim, seria bom guardar o stack trace das exceções em algum log, para consulta posterior.
Quanto ao seu caso.
Sim se o objeto for nulo, segundo o livro Effective Java do Joshua Block (criador da biblioteca collections do Java) a exceção que deve ser lançada é mesmo uma null pointer exception. O código é mesmo o que você fez.
IllegalArgumentException também é uma opção. Há muita discussão em qual das duas usar. Eu, particularmente, sou mais simpatizante dessa última também, assim sei que um NullPointerException só ocorre por um erro grave de programação meu. Fica a seu critério. O importante é realmente lançar uma exceção.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/03/2009 11:52:36
|
cherador
Debugger
![[Avatar]](/images/avatar/980df085b8a5e737a29f52d4b7263dac.jpg)
Membro desde: 05/09/2007 16:40:14
Mensagens: 71
Offline
|
ow mas se no caso, quero q minha variável continue nula eu uso alguma exceção?
|
|
|
 |
|
|