| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/09/2009 11:39:54
|
analyser
JavaEvangelist
![[Avatar]](/images/avatar/d5e9d9e23447e1907c70ac5d9b29edcc.jpg)
Membro desde: 26/02/2007 09:31:49
Mensagens: 329
Offline
|
Olá, tenho um ambiente onde forneço serviços a cliente que são aplicações externas, e nesses serviços recebo um objeto como parametro que representa uma entidade, e no meu serviço valido se a entidade (argumento), passado como parâmetro é válido, entre essas validações verifico se o estado do objeto é válido tb, pois isso faz parte do contrato.
Agora a dúvida, qual exceção devo lançar para o meu cliente, IllegalArgumentException ou IllegalStateException, já que o argumento que ele me passou é inválido e seu estado tb pode ser.
Até mais.
|
Analyser |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/09/2009 11:42:15
|
tnaires
GUJ Master
![[Avatar]](/images/avatar/5f6371c9126149517d9ba475def53139.png)
Membro desde: 22/12/2003 08:05:58
Mensagens: 1678
Localização: Porto Alegre/RS - Natal/RN
Offline
|
Use IllegalArgumentException para esse caso. IllegalStateException é utilizada quando um método é chamado em um momento inapropriado.
This message was edited 1 time. Last update was at 29/09/2009 11:42:52
|
Tarso Nunes Aires
Blog - http://cabritin.wordpress.com/
Delicious - http://delicious.com/tnaires
Twitter - @tnaires
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/09/2009 11:46:57
|
analyser
JavaEvangelist
![[Avatar]](/images/avatar/d5e9d9e23447e1907c70ac5d9b29edcc.jpg)
Membro desde: 26/02/2007 09:31:49
Mensagens: 329
Offline
|
tnaires wrote:Use IllegalArgumentException para esse caso. IllegalStateException é utilizada quando um método é chamado em um momento inapropriado.
Obrigado pelo resposta tnaires, eu vi a um tempo o post do "Shoes", sobre contratos nulos (http://www.fragmental.com.br/wiki/index.php/Contratos_Nulos), e nele ele utiliza o IllegalStateException, para denotar que o estado do objeto é inválido, não seria esse o caso tb, o estado do objeto que recebi é inválido?
Valew
|
Analyser |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/09/2009 13:43:52
|
tnaires
GUJ Master
![[Avatar]](/images/avatar/5f6371c9126149517d9ba475def53139.png)
Membro desde: 22/12/2003 08:05:58
Mensagens: 1678
Localização: Porto Alegre/RS - Natal/RN
Offline
|
O Shoes usa IllegalStateException para validar o estado do próprio objeto, e não de outro que ele esteja recebendo como argumento de método. Ou seja, sempre que os dados do objeto sofrem alguma modificação, é preciso checar seu estado. Caso ele tenha chegado em um estado inválido, uma IllegalStateException é lançada. Sacou a diferença?
Como exemplo, temos a classe abaixo:
Não é responsabilidade do método subtrair() validar o estado do objeto passado como parâmetro.
|
Tarso Nunes Aires
Blog - http://cabritin.wordpress.com/
Delicious - http://delicious.com/tnaires
Twitter - @tnaires
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/09/2009 14:11:08
|
analyser
JavaEvangelist
![[Avatar]](/images/avatar/d5e9d9e23447e1907c70ac5d9b29edcc.jpg)
Membro desde: 26/02/2007 09:31:49
Mensagens: 329
Offline
|
Valew tnaires, eu já tinha imaginado essa diferença, mais é que o sentido da exception deixa duvida, e é sempre bom ouvir a opnião dos outros.
valew e abraço
|
Analyser |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/09/2010 09:50:43
|
andredecotia
JWizard
![[Avatar]](/images/avatar/3e0c75ef9041e74cc2a533fa0fbbf33a.jpg)
Membro desde: 19/10/2009 14:37:32
Mensagens: 2267
Localização: São Paulo
Offline
|
//método
public void subtrair(TestarIllegalState b) {
this.valor -= b.getValor();
//o argumento foi válido, mas dependendo do valor o objeto pode chegar
//a um estado inválido.
if (valor < 0) {
throw new IllegalStateException("Um número natural não pode ser menor que zero.");
}
}
não entendí essa parte... tou tentando gerar essa exceções...
|
--
André AS
Analista Programador Java Web freelancer / home office
Linkedin: http://www.linkedin.com/profile/view?id=41470291&trk=tab_pro
|
|
|
 |
|
|