Spring错误处理不起作用

时间:2015-06-20 10:18:19

标签: java spring error-handling

有很多主题,但是......我有正确的返回参数和参数,我认为这是必要的。有什么问题?

<servlet>
    <servlet-name>springMvc</servlet-name>
    <servlet-class>com.vse.uslugi.utilities.web.BaseDispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.DispatcherServlet;

public class BaseDispatcherServlet extends DispatcherServlet {
@ResponseBody
@ExceptionHandler(Exception.class)
public String handleThrowable() {
    return ErrorService.html("Internal server error");
}

@ResponseBody
@ExceptionHandler(ResourceNotFoundException.class)
public String handleResourceNotFoundException() {
    return ErrorService.html("Page not found");
}
}
//--------------------
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ResponseStatus;

@ResponseStatus(HttpStatus.NOT_FOUND)
public class ResourceNotFoundException extends RuntimeException {
}

1 个答案:

答案 0 :(得分:0)

调度程序servlet正在由应用程序服务器实例化,因此它可能不是由Spring管理的。

您有一些选择:

  1. @ExceptionHandler方法添加到控制器。
  2. 在您的spring上下文中添加一个bean,其上有@ExceptionHandler个方法,并使用@ControllerAdvice注释该类,默认情况下会将其应用于所有控制器。