|
Oi pessoal,
Estou desenvolvendo um sistema e estou com problemas quanto ao tratamento
de exce��es. Preciso fazer com que as exce��es lan�adas em qualquer camada
do sistema chegue � camada de apresenta��o. O que eu fiz foi criar uma exce��o
chamada SistemaException que herda de RuntimeException. Quando ocorre algum erro
eu trato com try/catch e lan�o uma SistemaException, o meu problema � que, l� na
camada de apresenta��o, quando mando escrever e.getMessage() o sistema escreve
null. Acho que o que est� acontecendo � que quando declaro as emiss�es nos
m�todos intermedi�rios com throws, o sistema est� criando uma nova exce��o e n�o
passando o mesmo objeto que foi criado por mim quando a exce��o foi lan�ada. S�
consigo pegar as mensagens das exce��es l� na camada de apresenta��o quando eu
trato a exce��o com try/catch e relan�o usando throw e; repassando assim o mesmo
objeto SistemaException, e, com isso, levando a mensagem dele. Mas sei que isso
n�o existe, porque o sistema ficaria cheio de try/catch sem necessidade. Fiz um
teste mais simples de quatro classes que chamam uma a outra para exibir qualquer
coisa e a mensagem chega ao final (o c�digo est� abaixo). Ser� que as mensgens
das minhas exce��es n�o chegam porque o relacionamento entre os objetos � feito
utilizando interfaces?
============================================
package teste;
public class ExcecaoGeral extends RuntimeException {
public ExcecaoGeral(String mensagem){ super(mensagem); //System.out.println("criada a exce��o"); } } ============================================
package teste; public class Classe1 {
public static void main(String[] args) { Classe2 c2 = new Classe2(); String data; try{ data = ""> System.out.println(data); } catch(ExcecaoGeral e){ System.out.println(e.getMessage()); } } } ============================================
package teste;
public class Classe2 { public String metodo2(String formato) { Classe3 c3 = new Classe3(); String data = ""> return
data;
} } ============================================ package teste; public class Classe3 {
public String metodo3(String formato) { Classe4 c4 = Classe4.getInstance(); return c4.metodo4(formato); } } ============================================
package teste; import java.util.Date;
import java.text.SimpleDateFormat; public class Classe4 {
private static Classe4 instance; private Classe4(){
} public static Classe4 getInstance(){ if(instance == null){ instance = new Classe4(); } return instance; } public String metodo4(String formato) { if(!formato.equals("dd/MM/yyyy")){ throw new ExcecaoGeral("Formato errado: " + formato); } SimpleDateFormat formater = new SimpleDateFormat(formato); Date data = "" Date(); String dataStr = formater.format(data); return dataStr; } } ============================================
[]�s
� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � Rodrigo Oliveira [ Programador ] Icorp - Ag�ncia de Internet Criando uma internet de resultados :: www.icorp.com.br :: * [EMAIL PROTECTED] ( 81 3427.1359 |
