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: [email protected]
For additional commands, e-mail: [email protected]