I know this is slightly different from the way you are trying it but this is
the way I am currently doing it is:

<global-exception-mappings>
        <exception-mapping exception="java.lang.Exception"
result="unhandledExceptionHandler"/>
</global-exception-mappings>


<global-results>
        <result name="unhandledExceptionHandler" type="chain">
                 <param
name="actionName">actionUnhandledExceptionHandler</param>
                 <param name="namespace">/unsecured</param>
        </result>
<global-results>


and then I define an action - actionUnhandledExceptionHandler:

public class ActionUnhandledExceptionHandler extends BaseActionSupport {

private Exception exception;

@Override()
    public String execute() {

        if(exception != null){
            logException(serviceProsocUser , exception);

            // Send the user to the error page with a message
            addActionError(getText("common.unknown.exception") + "<div
class=\"errorMessageExceptionText\">" + exception.toString() + "</div>");

            return ERROR;
            
        } else {
            logger.error("***** TRIED TO LOG EXCEPTION BUT EXCEPTION WAS
NULL! I HAVE NOT LOGGED THIS EXCEPTION! *****");
        }

       
addActionError(getText("actionUnhandledExceptionHandler.could.not.log.exception"));
        return "canNotLogDatabaseError";
    }

public void setException(Exception exception) {
        this.exception = exception;
    }
}


The logException method calls this to get the actual stacktrace:

public String exceptionStackTraceToString(Exception exception){

        StringWriter stringWriter = new StringWriter();
        exception.printStackTrace(new PrintWriter(stringWriter));
        String stackTrace = stringWriter.toString();

        // As stackTrace may contain regular expression special characters
we need to make them harmless first
        return Matcher.quoteReplacement(stackTrace);
    }

I then, from within logException, write the exception to an email and the
database but you can of course do what you like with it.

HTH



JJ__ wrote:
> 
> Hello,
> I am trying to implement declarative exception handling for all the
> possible exceptions. The problem is that in this way I only catch some
> exceptions (not all of them) and I cant get its stack trace nor its
> message(it is only rendered the rest of my JSP but not the information
> about the stack or message about the excepion). I have this:
> 
> In my struts.xml
>         <global-results>
>             <result name="handleException"
> type="redirect">error.jsp</result>
>         </global-results>
>         
>         <global-exception-mappings>
>             <exception-mapping result="handleException"
> exception="java.lang.Exception"/>
>         </global-exception-mappings>
> 
> And in my JSP
>    <%@ taglib prefix="s" uri="/struts-tags" %>
> ...
>         <s:property value="%{exception.message}"/>
>         <s:property value="%{exceptionStack}"/>
> 
> Thanks in advanced
> 
> 
> 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/exception-handling-tp21518870p21528352.html
Sent from the Struts - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
For additional commands, e-mail: user-h...@struts.apache.org

Reply via email to