Tratar excessão

pessoal preciso de ajuda

estou utilizando commons mail apache para enviar email, so que esta lançando uma exceção que não estou conseguindo tratar com EmailException, vejam execeção abaixo:

DEBUG SMTP: Invalid Addresses
DEBUG SMTP: “familiapfahl@pop.cpm.br” familiapfahl@pop.cpm.br
DEBUG SMTP: Sending failed because of invalid destination addresses
RSET
250 flushed
javax.mail.SendFailedException: Invalid Addresses;
nested exception is:
com.sun.mail.smtp.SMTPAddressFailedException: 511 sorry, can’t find a valid MX for rcpt domain (#5.1.1 - chkuser)

como poderia estar tratando esta execeção utlizando commons mail ?

no aguardo!!!

Como assim não está conseguindo tratar?

Ve da onde ela vem o põe o pai de todos no catch()…

tipo assim:

catch(Throwable t)
{

}

essa exceção mostraria para mim o email inválido

como ficaria o catch com Throwable ?

ahhhh entendi…

bom, vc tem que fazer catch(SendFailedException sfe)

huehuehuee foi mals ai nao tinha entendido

Por que Throwable ?

Eu faria assim:

Try{

//Suas instruções

}
catch (Exception e){
//Tratamento do erro AQUI
}

Acho interessante tratar Exception e não SendFailedException, porque se der outra exception seu código estará defensivo.
Mas tb podes tratar a SendFailedException

[code]Try{

//Suas instruções
}catch (SendFailedException sfe){
System.out.println(sfe.getMessage());
}catch (Exception e){
System.out.println(e.getMessage());
} [/code]

vai tratando tudo que achar necessário antes do erro geral.

[quote=andrestrindade]Por que Throwable ?

Eu faria assim:

Try{

//Suas instruções

}
catch (Exception e){
//Tratamento do erro AQUI
}

Acho interessante tratar Exception e não SendFailedException, porque se der outra exception seu código estará defensivo.
Mas tb podes tratar a SendFailedException[/quote]

Bom depende se ele quer identificar qual é o erro exatamente, tem que tratar com a exception específica e não uma genérica… Foi isso que entendi que ele tinha perguntado…

Se para ele tanto faz o erro que acontecer, aí sim, mete um Throwable que é o pai de todos e pronto…

Tá, mas o throwable não vai tratar o erro… Se for web por exemplo, o usuário vai se deparar com o erro, se não for “jogado pra um tratamento” não é ?

eu preciso pegar o adress mail que deu erro e jogar para cima
mas a classe EmailException não me possibilita isso, tentei com Throwable tambem nao deu
teria de ser SendFailedException mas nao consigo,
não sei se e limitação de commons Email, por isso to aqui
pedindo ajuda da galera, algum de nos pode ja ter se deparado
com esse problema e ter resolvido de alguma forma.

Cara, segue a documentação: http://download.oracle.com/javaee/1.3/api/javax/mail/SendFailedException.html

O que você está fazendo parece estar certo, se der um throws SendFailedException no método é pra subir essa exceção…

Coloca seu código aí fazendo favor…

olha o codigo

                                try {
	                     email.setDebug(true);  
	                     email.setHostName(servidor);
		     email.setSmtpPort(Integer.parseInt(porta));
		     email.setAuthenticator(new DefaultAuthenticator(remetente, senha));
		     email.setSSL(false);
		     email.setTLS(false);
		     email.setSubject(titulo);
	  	     email.setMsg(mensagem);
	  	     email.setFrom(remetente);
	  	     email.setBounceAddress(remetente);
	                     email.send();
	  	     paginacaoEmail(colecao,tipoPessoa,titulo,"");
	  	     
	  	} catch (EmailException e) {
	  		throw new NegocioException("Operação Inválida - Não foi possivel enviar os emails contate o administrador");
		}

com commons mail sou obrigado a lançar EmailException eu nao consigo lançar outra exceção a nao ser Throwable >> Exception >> EmailException

Obs. com email exception e nao encontrei como jogar pra cima Invalid adress.

Você tem que ver que Invalid Adress é apenas a mensagem dentro do SendFailedException…

Eu faria diferente… Nesse seu método de envio de email eu não colocaria try catch, apenas throws, o eclipse faz isso para você…

Na chamada desse método eu colocaria um try catch…

try
{
   enviaEmail();
}
catch(Throwable t)
{
   // uma validação qualquer ou lança pra cima isso ainda como vc fez
   throw new NegocioException("Operação Inválida - Não foi possivel enviar os emails contate o administrador");
}

ta mas como eu pego o endereço de email inválido.
porque esta dando a exceção os emails nao são passados
para no email que o sevidor nao aceitou por ter
um dominio inválido.

eu queria retornar esse email para usuario para ele arrumar
eu tirar da lista e enviar novamento o email

Eu acho que via exception você não vai conseguir qual o email exato que deu erro para enviar…

o que são aquels linhas com DEBUG na fente?

DEBUG SMTP: “familiapfahl@pop.cpm.br” familiapfahl@pop.cpm.br

de onde veio isso? Este email que está dando erro?

e a exception que esta sendo lançada e nao tradada
eu copiei do console para postar

debug e do commons mail mostra o que acontece
no console.

a exceção Invalid adress acontece eu so não consigo tratar,
se coloco catch com a classe SendFailedException o eclipse
diz que a exceção nunca vai acontecer, mas ela acontece.

no commons Mail essa parte de exceção e meio engessada
ao que me parece pq na documentação fala que
EmailException >> Exception >> Thowable, esta exceção
que quero lançar não esta nesta arvore.

e a SMTPAddressFailedException? consegue lançar?

tambem não consigo, diz que nunca vai acontecer tb.