我的一项服务引发了自定义异常(SearchException
)。异常定义为:
@ResponseStatus(value = HttpStatus.INTERNAL_SERVER_ERROR)
public class SearchException extends Exception {
private static final long serialVersionUID = 1L;
}
然后我有了一个ErrorController:
@Controller
public class TVFErrorController implements ErrorController {
private static final Logger log = LoggerFactory.getLogger(TVFErrorController.class);
@RequestMapping("/error")
public String handleError(HttpServletRequest request, Exception e) {
//do something like logging
Object status = request.getAttribute(RequestDispatcher.ERROR_STATUS_CODE);
if (status!=null){
log.error("An error occured: status: "+status.toString());
}
if (e != null){
log.error("Exception that occured: "+e.toString());
e.printStackTrace();
}
return "error";
}
@Override
public String getErrorPath() {
return "/error";
}
}
大多数操作都按预期进行,唯一的问题是描述控制器中异常的日志消息始终报告一个java.lang.Exception而不是我的SearchException。
答案 0 :(得分:0)
大多数操作都按预期进行,唯一的问题是描述控制器中异常的日志消息始终报告一个java.lang.Exception而不是我的SearchException。
我想发生这种情况是因为您的错误处理程序在收到以下信息时将其从SearchException
删除为Exception
的异常类型:
public String handleError(HttpServletRequest request, Exception e)
我认为您需要为SearchException