SpringBoot2.0.6 统一处理异常包括404异常
1. SpringBoot文档关于异常
2.默认异常BasicErrorController类
@Controller@RequestMapping("${server.error.path:${error.path:/error}}")public class BasicErrorController extends AbstractErrorController {
3. 先处理全局异常
4. 处理404异常
经过3的处理,在访问时抛出异常,会经过这个统一异常处理
但是,当请求的方法不存在是,会抛出404的异常
这个时候怎么处理呢
4.1 改写配置
#出现错误时, 直接抛出异常spring.mvc.throw-exception-if-no-handler-found=true#关闭工程中的资源文件建立映射spring.resources.add-mappings=false
4.2 在全局异常处理中添加 NoHandlerFoundException异常处理
这样的话,当访问路径不存在时返回
4.3 集成swagger时,需要增加配置
如果按上面配置,在4.1中已经配置了不加载静态资源,这样导致swagger访问时出现问题,这样就得将swagger-ui特殊化
@Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/swagger-ui.html") .addResourceLocations("classpath:/META-INF/resources/", "/static", "/public"); registry.addResourceHandler("/webjars/**") .addResourceLocations("classpath:/META-INF/resources/webjars/"); }
网上有人说要继承WebMvcConfigurationSupport ,亲测,不可以