使用SpringWebFlow记录异常
Hy使用SpringWebFlow记录异常,spring,logging,spring-webflow,Spring,Logging,Spring Webflow,Hy 我是SpringWebFlow的新手。我试图找出记录异常的最简单方法是在流文件中。有一个名为exceptionhandler的标记,但我找不到任何关于如何记录异常的文档。我知道会记录第三方库的异常(spring,hibernate),但我想处理异常并创建自己的日志项。基于控制器的异常处理 使用@ExceptionHandler @Controller public class ExceptionHandlingController { @ExceptionHandler(Exceptio
我是SpringWebFlow的新手。我试图找出记录异常的最简单方法是在流文件中。有一个名为
exceptionhandler
的标记,但我找不到任何关于如何记录异常的文档。我知道会记录第三方库的异常(spring
,hibernate
),但我想处理异常并创建自己的日志项。基于控制器的异常处理
使用@ExceptionHandler
@Controller
public class ExceptionHandlingController {
@ExceptionHandler(Exception.class)
public ModelAndView getExceptionPage(Exception e, HttpServletRequest request) {
// Catches all exception
// Do anything with Exception object here
if (isAjax(request)) {
// If exception comes for Ajax requests
ModelAndView model = new ModelAndView("forward:/app/webExceptionHandler/ajaxErrorRedirectPage");
model.addObject("exception", exception);
model.addObject("url", req.getRequestURL());
model.setViewName("error");
return model;
} else {
// If exception comes for all non Ajax requests
ModelAndView model = new ModelAndView("forward:/app/webExceptionHandler/nonAjaxErrorRedirectPage");
model.addObject("exception", exception);
model.addObject("url", req.getRequestURL());
model.setViewName("error");
return model;
}
}
@ExceptionHandler({SQLException.class,DataAccessException.class})
public String databaseError() {
// Catches specific exception SQLException
return "databaseError";
}
private static boolean isAjax(HttpServletRequest request) {
return "XMLHttpRequest".equals(request.getHeader("X-Requested-With"));
}
}
全局异常处理
使用@ControllerAdvice
类
控制器建议允许您使用完全相同的异常处理技术,但将它们应用于整个应用程序,而不仅仅是单个控制器。您可以将它们视为注释驱动的拦截器
使用@ControllerAdvice
注释的任何类都将成为控制器建议,并且支持三种类型的方法:
@ControllerAdvice
class GlobalControllerExceptionHandler {
@ExceptionHandler(DataIntegrityViolationException.class)
public void handleConflict() {
// Nothing to do
}
}
请查看更多详细信息。好的,但是如何在流文件中配置此控制器?我必须将其声明为异常处理程序吗?@user3254515请获取更多详细信息。