spring boot 处理异常
1、通过建目录及html文件来显示不同的错误提示。
测试以后发现,不存在会访问error/404.html,出错了都会走error.html。
2、通过代码返回json来处理相应的错误
1)设置
#出现错误时, 直接抛出异常
spring.mvc.throw-exception-if-no-handler-found=true
#表示不开启默认的资源处理,比如404
spring.resources.add-mappings=false
在配制文件里加上上面的一段话,就可以不走html文件,而去走class。
2)处理
@RestControllerAdvice public class HandExceptionRes { /** 实际处理,可以自已手工修改,以适合自已的业务。 */ @ExceptionHandler(value = Exception.class) ==>这里面的value = Exception.class 在这个类中只可以存在同样的值唯一一次,不然运行会报错。 @ResponseBody public Result defaultErrorHandler(HttpServletRequest req, Exception e) throws Exception { Result result = new Result(); -->自定义的类 result.setMessage(ConstsInfo.CustomException); //设置了一个值,可以自已写,比如"123" result.setResultCode("-1"); result.setTotal(0); ResultInfo resultInfo = new ResultInfo();
if (e instanceof org.springframework.web.servlet.NoHandlerFoundException) { resultInfo.setMsg("接口不存在"); } else { resultInfo.setMsg(e.getLocalizedMessage()); } return result; } }
这样不管出什么问题,都会走这个方法,也不用自已再自定义类extends RuntimeException
当然,你还有更加明细的需求,那么可以自定义,然后throw new 自定义类();
道法自然