struts.xml:
<global-results>
<result name="error">error.jsp</result>
</global-results>
<action name="insert" class="com.lul.action.InsertAction">
<result name="success">success.jsp</result>
<interceptor-ref name="exceptionInceptor"></interceptor-ref>
</action>
自定义异常类:
[code="java"]public class BusinessException extends RuntimeException {
private static final long serialVersionUID = 1L;
public BusinessException(String errorMessage) {
super(errorMessage);
}
}[/code]
自定义用于异常处理的拦截器:
public String intercept(ActionInvocation invocation) throws Exception {
String result = null;
try {
result = invocation.invoke();
} catch(DataAccessException dae) {
throw new BusinessException("数据库操作失败");
}
...
...捕获常见的异常,并以友好异常信息抛出
}
在调用insert.action后,dao抛出异常,但不知为什么不能跳到error.jsp页面,而是
[color=red]HTTP Status 500 -
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: com.lul.exception.BusinessException: Sorry, 数据库操作失败 Please try again!
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:515)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:419)[/color]
有哪位高手知道错误原因,请指教!
[b]问题补充:[/b]
error.jsp
<global-exception-mappings>
<exception-mapping name="exceptionPage"
exception="java.lang.Exception"
result="exceptionPage"/>
</global-exception-mappings>
这样是可以跳到error.jsp页面,但我想要的是在拦截器中对异常进行分类和包装,然后再以友好的方式提示到error.jsp
[b]问题补充:[/b]
to jones:
我是在exceptionInceptor拦截器里对异常进行分类,然后交给BusinessException去提示异常信息,不可能在Action里用N多的catch把异常分类吧,不知道有没有别的好的方法。
[b]问题补充:[/b]
to jones:
我明白你的意思,并且这样可以跳转到指定的错误页面,但我想请教一下,怎么能在错误页面获取拦截器里的异常提示信息。多谢!