[Logo] Mentawai Forum - Mentawai Web Framework
  [Search] Search   [Recent Topics] Recent Topics   [Members]  Member Listing   [Groups] Back to home page 
[Register] Register / 
[Login] Login 
Não substituir as exceções  XML
Forum Index -> Comentários Gerais Go to Page: Previous  1, 2
Author Message
bruno.braga



Joined: 01/12/2006 09:37:16
Messages: 226
Offline

Alias, se tratar só o ActionException acho que não atrapalha, porque aquela exceção ali (que tem a ver com o consequence) não é uma outra exceção que foi jogada dentro do ActionException. É uma exceção nova.

Porém pode ter "problemas" futuros dependendo de como for usado o ActionExceptio (novos casos)... Por isso prefiro a idéia de uma exceção especifica. Ou não tratar todas as exceções do inneraction, tratar só as de reflection.

http://www.brunobraga.com.br
http://www.j2eespider.org
[WWW]
bruno.braga



Joined: 01/12/2006 09:37:16
Messages: 226
Offline

Desistiram de tentar acertar isso?

http://www.brunobraga.com.br
http://www.j2eespider.org
[WWW]
saoj



Joined: 01/07/2005 09:59:17
Messages: 2846
Location: Rio de Janeiro, RJ
Offline


Tentamos e nada. Alguma novidade por aí?

Sergio Oliveira

bruno.braga



Joined: 01/12/2006 09:37:16
Messages: 226
Offline

Você tentou algo q eu tinha falado?
Eu tinha falado muita coisa acho que não deu para entender direito...

Mas no InvocationChain tem esse código:
Code:
  		if (innerAction != null) {
  			Method m = getMethod(innerAction);
  			if (m != null) {
  				try {
  					result = (String) m.invoke(action, new Object[0]);
  				} catch(Exception e) {
  					throw new ActionException(e);
  				}
  			} else {
  				throw new ActionException("The inner action does not exist: " + innerAction);
  			}
  		} else {
  			result = action.execute();
  		}
 


Se vc fizer assim funciona:
Code:
  		if (innerAction != null) {
  			Method m = getMethod(innerAction);
  			if (m != null) {
  					result = (String) m.invoke(action, new Object[0]);
  			} else {
  				throw new ActionException("The inner action does not exist: " + innerAction);
  			}
  		} else {
  			result = action.execute();
  		}
 


Veja que eu não estou pedindo para deixar de tratar a exceção, estou pedindo para usar a mesma regra do else ali (quando não é innerAction)... Ou seja, não substituir a exceção real.

Tem outras formas de fazer mantendo o ActionException, mas esse é o mais simples de explicar e fazer... hehe

http://www.brunobraga.com.br
http://www.j2eespider.org
[WWW]
saoj



Joined: 01/07/2005 09:59:17
Messages: 2846
Location: Rio de Janeiro, RJ
Offline

Fala Bruno !!!

Acho que consegui resolvi fazendo a alteraçao abaixo na classe ActionException.

Se alguém puder testar e dizer se ficou melhor. Acho que agora ficou show de bola !!!! Valeu pela ajuda Bruno!

Code:
 package org.mentawai.core;
 
 
 /**
  * An exception that can happen when an action is executed.
  * 
  * @author Sergio Oliveira
  */
 public class ActionException extends Exception {
 	
 	public ActionException() {
 		super();
 	}
 	
 	public ActionException(Throwable e) {
 		super(e);
 		Throwable root = getRootCause(e);
 		this.setStackTrace(root.getStackTrace());
 	}
 	
 	public ActionException(String msg) {
 		super(msg);
 	}
 	
 	public ActionException(String msg, Throwable e) {
 		
 		super(msg, e);
 		Throwable root = getRootCause(e);
 		this.setStackTrace(root.getStackTrace());
 	}
 	
 	private static Throwable getRootCause(Throwable t) {
 		
 		Throwable root = t.getCause();
 		
 		if (root == null) return t;
 		
 		while(root.getCause() != null) {
 			
 			root = root.getCause();
 		}
 		
 		return root;
 		
 	}	
 }
 


Antes estava assim:

Code:
 package org.mentawai.core;
 
 
 /**
  * An exception that can happen when an action is executed.
  * 
  * @author Sergio Oliveira
  */
 public class ActionException extends Exception {
 	
 	public ActionException() {
 		super();
 	}
 	
 	public ActionException(Throwable e) {
 		super(e);
 		this.setStackTrace(e.getStackTrace());
 	}
 	
 	public ActionException(String msg) {
 		super(msg);
 	}
 	
 	public ActionException(String msg, Throwable e) {
 		
 		super(msg, e);
 		this.setStackTrace(e.getStackTrace());
 	}
 	
 }
 

Sergio Oliveira

 
Forum Index -> Comentários Gerais Go to Page: Previous  1, 2
Go to:   
Powered by JForum 2.1.6 © JForum Team