用户定义的异常类不由Spring MVC异常处理程序处理

时间:2015-09-08 10:13:00

标签: java spring spring-mvc exception exception-handling

我创建了自己的异常并尝试使用spring MVC来处理它。

Spring处理所有异常,除了我自己的异常(User Defined)。 有什么问题,如何在Spring MVC中处理用户定义的异常?

我在我的控制器和@ExceptionHandler中使用了@ControllerAdvice,在Dispatcher servlet中使用了SimpleMappingExceptionResolver bean没有帮助。在每个阶段,所有系统定义的异常都按预期处理。

用户定义的例外:

public class GeneralUserException extends Exception {
    private static final long serialVersionUID = 1L;
    String message;

    public GeneralUserException (String message){
        this.message = message;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }
}
控制器中的

异常处理程序:

@ExceptionHandler(value = GeneralUserException.class)
public String defaultErrorHandler(HttpServletRequest req, GeneralUserException e)  {
    return "general_error";
}

@ControllerAdvice中的异常处理程序:

@ControllerAdvice
class GlobalDefaultExceptionHandler {
    @ExceptionHandler(value = GeneralUserException.class)
    public String defaultErrorHandler(HttpServletRequest req, GeneralUserException e)  {
        return "general_error";
    }
}
调度程序Servlet上下文中的

Bean(WebAppConfig):

public class WebAppConfig extends WebMvcConfigurerAdapter{
    @Bean
    public SimpleMappingExceptionResolver createSimpleMappingExceptionResolver() {
        SimpleMappingExceptionResolver r = new SimpleMappingExceptionResolver();

        Properties mappings = new Properties();
        mappings.setProperty("GeneralUserException", "general_error");

        r.setExceptionMappings(mappings);  
        r.setDefaultErrorView("error");   

        return r;
    }

    ...
}

所有这些都没有显示错误页面。但是,当我将GeneralUserException更改为Exception / RuntimeException时,它就有效。我试图把完全合格的名字。

我使用spring,spring MVC,spring Security如果有帮助的话。而且我不会使用Spring Aspects。

注意: SimpleMappingExceptionResolver正在返回"错误" DefaultErrorView的错误页面(因此其工作)。当我使用RuntimeException代替GeneralUserException时,它会返回" general_error"查看它是否适用于RuntimeException

0 个答案:

没有答案