我在我的应用程序中使用Spring SimpleMappingExceptionResolver
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="exceptionMappings">
<map>
<entry key="Exception" value="error.htm"/>
</map>
</property>
<property name="defaultErrorView" value="error.htm" />
</bean>
我的错误处理程序也很简单
@Controller
@RequestMapping("error.htm")
public class ErrorController {
@RequestMapping(method = RequestMethod.GET)
public ModelAndView getErrorReport(HttpServletRequest request) {
return new ModelAndView("/WEB-INF/jsp/error.jsp");
}
@RequestMapping(method = RequestMethod.POST)
public ModelAndView getErrorPostReport(HttpServletRequest request,HttpServletResponse response) {
TreeMap<String,Object> map=new TreeMap<String,Object>();
map.put("isDataChange", true);
map.put("isBigError", true);
return new ModelAndView(JSONView.RenderObject(map, response));
}
}
如何在我的错误控制器中打印异常消息和异常堆栈跟踪(或通过电子邮件发送)?
提前致谢
更新
感谢您的回复。我想在jsp和控制台中打印堆栈跟踪。我还想访问ErrorController本身中的对象,以便我可以使用该信息来发送日志(因为一些调用是基于ajax的,(他们使用POST),error.jsp在那里没用,所以我需要一些方法来访问控制器本身的信息。)
答案 0 :(得分:3)
由于你的getErrorReport
方法除了返回jsp页面之外什么都不做,你可以在bean声明中返回它:
<property name="defaultErrorView" value="/WEB-INF/jsp/error.jsp" />
在页面中,您可以访问exception
模型对象:
<c:forEach items="${exception.stackTrace}" var="element">
<c:out value="${element}">
</c:forEach>
如评论中所述。