Exceptions... vai compilar?  XML
Índice dos Fóruns » Certificação Java
Autor Mensagem
fabim
GUJ Master
[Avatar]

Membro desde: 14/12/2006 19:30:03
Mensagens: 1268
Localização: Vitoria - Espirito Santo
Offline

A classe "Teste2" abaixo vai compilar?
Lembrando que as 2 exceções herdam indiretamente de Exception.




ειπεν αυτη ο ιησους εγω ειμι η αναστασις και η ζωη ο πιστευων εις εμε καν αποθανη ζησεται

Sun Certified Web Component Developer
Sun Certified Java Programmer
Sun Certified Java Associate
Sun Certified Business Component Developer - Em Andamento
Bacharelando em Sistemas de Informacao


[MSN]
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20581
Localização: Curitiba/PR
Offline

Se não tiver nenhuma pegadinha sintática, sim.

A classe Teste2 usa o try...catch(Exception e) anti-pattern.

@ViniGodoy - Lattes

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
victorwss
JWizard
[Avatar]

Membro desde: 18/12/2007 14:46:00
Mensagens: 2409
Localização: São Paulo - SP
Offline

Ou a resposta é óbvia (vai compilar) ou eu não estou vendo a pegadinha.

Victor Williams Stafusa da Silva

Bacharel em Ciência da Computação - UFMT // Especialista em Desenvolvimento Java - CEFET/MT // Doutorando em Ciência da Computação - IME-USP
SCJP 6.0 - 19/12/2007 - PASS - 88% // SCWCD 5 - 17/05/2008 - PASS - 79% // SCJA - 09/09/2008 - PASS - 96% // SCSNI - 30/06/2009 - PASS - 68% // SCBCD 5 - 31/05/2010 - PASS - 95%
Próximos: SCJD (encalhado com o projeto), SCEA parte I (estudando). Algum dia desses: SCMAD, OCA, SCEA e SCDJWS.

Computação: uma ciência holística e esotérica!
E então veio Deus a terra e disse aos homens: Não dividireis por zero.
XML is a giant step in no direction at all. (Erik Naggum)
Arquitetura de sistemas: Eu prefiro ser essa metamorfose ambulante do que ter aquela velha opinião formada sobre tudo.
Diga não as drogas: Não use java.util.Vector.
Cuidado: Este usuário pode ter temperamento agressivo.

Always code as if the person who will maintain your code is a maniac serial killer that knows where you live.
I am the maniac serial killer that knows where you live who will maintain your code.


É impossível falar de CMMI (Capability Maturity Model Integration) sem saber o que é CIMM (Capability Im-Maturity Model).


Se você escreve "concerteza", "concerteza" você andou matando aulas de português.
[MSN]
fabim
GUJ Master
[Avatar]

Membro desde: 14/12/2006 19:30:03
Mensagens: 1268
Localização: Vitoria - Espirito Santo
Offline

Foi isso que eu pensei tb Srs.

Postei isso pq me deparei com isso no projeto em que estou trabalhadno.
Mas o compilador reclamou que a minha classe "Teste2" nao conhece as 2 Exceptions mostradas no exemplo. Tiver que importar elas.


ειπεν αυτη ο ιησους εγω ειμι η αναστασις και η ζωη ο πιστευων εις εμε καν αποθανη ζησεται

Sun Certified Web Component Developer
Sun Certified Java Programmer
Sun Certified Java Associate
Sun Certified Business Component Developer - Em Andamento
Bacharelando em Sistemas de Informacao


[MSN]
fabim
GUJ Master
[Avatar]

Membro desde: 14/12/2006 19:30:03
Mensagens: 1268
Localização: Vitoria - Espirito Santo
Offline

Alguem pode me explicar o pq disso?
Pq eu achei HORRIVEL ter que adicionar no meu caso de uso a lib do J2EE pra satisfazer o compilador. Nao queria que a minha classe tivesse conhecimento delas. Dai o "catch" mais amplo.

Fiquei meio confuso.

ειπεν αυτη ο ιησους εγω ειμι η αναστασις και η ζωη ο πιστευων εις εμε καν αποθανη ζησεται

Sun Certified Web Component Developer
Sun Certified Java Programmer
Sun Certified Java Associate
Sun Certified Business Component Developer - Em Andamento
Bacharelando em Sistemas de Informacao


[MSN]
victorwss
JWizard
[Avatar]

Membro desde: 18/12/2007 14:46:00
Mensagens: 2409
Localização: São Paulo - SP
Offline

fabiocsi wrote:Alguem pode me explicar o pq disso?
Pq eu achei HORRIVEL ter que adicionar no meu caso de uso a lib do J2EE pra satisfazer o compilador. Nao queria que a minha classe tivesse conhecimento delas. Dai o "catch" mais amplo.

Fiquei meio confuso.


Isso é inevitável.


Na linha com *** O compilador vê o método metodoQualquer() e pela sua assinatura sabe que ele pode lançar a exceção. Como é uma exceção verificada, deve ser ou tratada ou relançada. Isso significa que ou você dá catch ou você da throws, e por isso DaDaDa teria que fazer isso.

Basicamente o throws de metodoQualquer diz "quem for usar esse método deve se preocupar com ExceptionQualquer". Isso implica que quem for usar metodoQualquer() deve ter conhecimento sobre ExceptionQualquer.

This message was edited 2 times. Last update was at 17/07/2008 15:03:54


Victor Williams Stafusa da Silva

Bacharel em Ciência da Computação - UFMT // Especialista em Desenvolvimento Java - CEFET/MT // Doutorando em Ciência da Computação - IME-USP
SCJP 6.0 - 19/12/2007 - PASS - 88% // SCWCD 5 - 17/05/2008 - PASS - 79% // SCJA - 09/09/2008 - PASS - 96% // SCSNI - 30/06/2009 - PASS - 68% // SCBCD 5 - 31/05/2010 - PASS - 95%
Próximos: SCJD (encalhado com o projeto), SCEA parte I (estudando). Algum dia desses: SCMAD, OCA, SCEA e SCDJWS.

Computação: uma ciência holística e esotérica!
E então veio Deus a terra e disse aos homens: Não dividireis por zero.
XML is a giant step in no direction at all. (Erik Naggum)
Arquitetura de sistemas: Eu prefiro ser essa metamorfose ambulante do que ter aquela velha opinião formada sobre tudo.
Diga não as drogas: Não use java.util.Vector.
Cuidado: Este usuário pode ter temperamento agressivo.

Always code as if the person who will maintain your code is a maniac serial killer that knows where you live.
I am the maniac serial killer that knows where you live who will maintain your code.


É impossível falar de CMMI (Capability Maturity Model Integration) sem saber o que é CIMM (Capability Im-Maturity Model).


Se você escreve "concerteza", "concerteza" você andou matando aulas de português.
[MSN]
fabim
GUJ Master
[Avatar]

Membro desde: 14/12/2006 19:30:03
Mensagens: 1268
Localização: Vitoria - Espirito Santo
Offline

victorwss wrote:
Basicamente o throws de metodoQualquer diz "quem for usar esse método deve se preocupar com ExceptionQualquer". Isso implica que quem for usar metodoQualquer() deve ter conhecimento sobre ExceptionQualquer.


E se eu te disser que, em vez de usar try/catch, eu simplesmente usar "throws Exception", compila, sem ter necessidade da minha classe "Teste2" ter conhecimento das exceções?


ειπεν αυτη ο ιησους εγω ειμι η αναστασις και η ζωη ο πιστευων εις εμε καν αποθανη ζησεται

Sun Certified Web Component Developer
Sun Certified Java Programmer
Sun Certified Java Associate
Sun Certified Business Component Developer - Em Andamento
Bacharelando em Sistemas de Informacao


[MSN]
raphaelrabadan
JavaBaby

Membro desde: 23/06/2008 14:09:48
Mensagens: 95
Localização: Recife-PE
Offline

fabiocsi wrote:
victorwss wrote:
Basicamente o throws de metodoQualquer diz "quem for usar esse método deve se preocupar com ExceptionQualquer". Isso implica que quem for usar metodoQualquer() deve ter conhecimento sobre ExceptionQualquer.


E se eu te disser que, em vez de usar try/catch, eu simplesmente usar "throws Exception", compila, sem ter necessidade da minha classe "Teste2" ter conhecimento das exceções?



Epa! Pelo que entedi você disse que, ao usar o catch com Exception ao invés de, por exemplo, MessagingException você precisará importa a MessagingException mesmo assim? Se for isso, não é verdade.

Veja essas 2 classes baseadas no seu próprio exemplo, elas funcionam normalmente.





É isso mesmo que você quer dizer?

This message was edited 2 times. Last update was at 17/07/2008 15:35:03


- Pós graduado em Engenharia de Software pela FBV
- Graduado em Análise e Desenvolvimento de Software pelo UNIBratec
- Sun Certified Programmer for the Java Platform, Standard Edition 6 (98%)
- Sun Certified Associate for the Java Platform, Standard Edition 1.0 (88%)
- Preliminary English Test (PET)
[ Next Targets: SCWCD, Software Engineering mSC]
fabim
GUJ Master
[Avatar]

Membro desde: 14/12/2006 19:30:03
Mensagens: 1268
Localização: Vitoria - Espirito Santo
Offline

Testei aqui e funciona mesmo sem os imports... porem qdo eu tirei do classpath do caso de uso a Lib do J2EE que contem as exceptions que mencionei, o compilador voltou a reclamar.

JDeveloper fundindo meu cérebro.

ειπεν αυτη ο ιησους εγω ειμι η αναστασις και η ζωη ο πιστευων εις εμε καν αποθανη ζησεται

Sun Certified Web Component Developer
Sun Certified Java Programmer
Sun Certified Java Associate
Sun Certified Business Component Developer - Em Andamento
Bacharelando em Sistemas de Informacao


[MSN]
raphaelrabadan
JavaBaby

Membro desde: 23/06/2008 14:09:48
Mensagens: 95
Localização: Recife-PE
Offline

fabiocsi wrote:Testei aqui e funciona mesmo sem os imports... porem qdo eu tirei do classpath do caso de uso a Lib do J2EE que contem as exceptions que mencionei, o compilador voltou a reclamar.

JDeveloper fundindo meu cérebro.


Hehehe, mas no caso, quem ta reclamando, Teste1 ou Teste2? Teste1 precisa das exceptions no classpath para que ele possa usá-las. Acho que é isso.

- Pós graduado em Engenharia de Software pela FBV
- Graduado em Análise e Desenvolvimento de Software pelo UNIBratec
- Sun Certified Programmer for the Java Platform, Standard Edition 6 (98%)
- Sun Certified Associate for the Java Platform, Standard Edition 1.0 (88%)
- Preliminary English Test (PET)
[ Next Targets: SCWCD, Software Engineering mSC]
fabim
GUJ Master
[Avatar]

Membro desde: 14/12/2006 19:30:03
Mensagens: 1268
Localização: Vitoria - Espirito Santo
Offline

Teste2 que ta reclamando

ειπεν αυτη ο ιησους εγω ειμι η αναστασις και η ζωη ο πιστευων εις εμε καν αποθανη ζησεται

Sun Certified Web Component Developer
Sun Certified Java Programmer
Sun Certified Java Associate
Sun Certified Business Component Developer - Em Andamento
Bacharelando em Sistemas de Informacao


[MSN]
victorwss
JWizard
[Avatar]

Membro desde: 18/12/2007 14:46:00
Mensagens: 2409
Localização: São Paulo - SP
Offline

fabiocsi wrote:Teste2 que ta reclamando


Teste1 deveria reclamar também.
Mas independente de Teste1 reclamar, Teste2 reclamará sempre. O compilador não olha apenas o nome dos métodos, o retorno e os parâmetros. Ele tem que olhar as exceções também. Daí como ele não encontra a classe. Dá erro. Mas não precisa dar import nelas se você colocar catch ou throws para Exception ou Throwable.

Imagine que isso ocorra no retorno de um método. Se metodo1 retorna ClasseA; ClasseB usa metodo1, mas sem usar o retorno (como se fosse void); e ClasseA não esteja no classpath, o compilador vai reclamar.

Victor Williams Stafusa da Silva

Bacharel em Ciência da Computação - UFMT // Especialista em Desenvolvimento Java - CEFET/MT // Doutorando em Ciência da Computação - IME-USP
SCJP 6.0 - 19/12/2007 - PASS - 88% // SCWCD 5 - 17/05/2008 - PASS - 79% // SCJA - 09/09/2008 - PASS - 96% // SCSNI - 30/06/2009 - PASS - 68% // SCBCD 5 - 31/05/2010 - PASS - 95%
Próximos: SCJD (encalhado com o projeto), SCEA parte I (estudando). Algum dia desses: SCMAD, OCA, SCEA e SCDJWS.

Computação: uma ciência holística e esotérica!
E então veio Deus a terra e disse aos homens: Não dividireis por zero.
XML is a giant step in no direction at all. (Erik Naggum)
Arquitetura de sistemas: Eu prefiro ser essa metamorfose ambulante do que ter aquela velha opinião formada sobre tudo.
Diga não as drogas: Não use java.util.Vector.
Cuidado: Este usuário pode ter temperamento agressivo.

Always code as if the person who will maintain your code is a maniac serial killer that knows where you live.
I am the maniac serial killer that knows where you live who will maintain your code.


É impossível falar de CMMI (Capability Maturity Model Integration) sem saber o que é CIMM (Capability Im-Maturity Model).


Se você escreve "concerteza", "concerteza" você andou matando aulas de português.
[MSN]
 
Índice dos Fóruns » Certificação Java
Ir para:   
Powered by JForum 2.1.8 © JForum Team