Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用SpringWebFlow记录异常_Spring_Logging_Spring Webflow - Fatal编程技术网

使用SpringWebFlow记录异常

使用SpringWebFlow记录异常,spring,logging,spring-webflow,Spring,Logging,Spring Webflow,Hy 我是SpringWebFlow的新手。我试图找出记录异常的最简单方法是在流文件中。有一个名为exceptionhandler的标记,但我找不到任何关于如何记录异常的文档。我知道会记录第三方库的异常(spring,hibernate),但我想处理异常并创建自己的日志项。基于控制器的异常处理 使用@ExceptionHandler @Controller public class ExceptionHandlingController { @ExceptionHandler(Exceptio

Hy


我是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请获取更多详细信息。