美文网首页
SpringBoot2.1全局异常

SpringBoot2.1全局异常

作者: 也许________ | 来源:发表于2018-11-15 13:59 被阅读80次
@ControllerAdvice
@ResponseBody
public class GlobalException {
    @ExceptionHandler
    @ResponseStatus
    public String exceptionHandler(Exception e) {
        return "全局异常------" + e.getMessage();
    }
}

添加上面的类,就完成了全局异常的配置,无论是运行时异常,还是其他类型的异常,都会被捕获并处理(如果有try catch,那么还是自己进行处理,这里指的是未被捕获的异常将由全局异常进行处理)
ps:
@ResponseStatus:这个注解可以返回异常的状态码,如果去掉该注解则状态码为200
@ControllerAdvice:控制器增强,这个注解可以灵活配置,看一下它的源码有如下配置

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface ControllerAdvice {
    @AliasFor("basePackages")
    String[] value() default {};

    @AliasFor("value")
    String[] basePackages() default {};

    Class<?>[] basePackageClasses() default {};

    Class<?>[] assignableTypes() default {};

    Class<? extends Annotation>[] annotations() default {};
}

value 和 basePackages 同样的作用,用于指定包名下的类出现异常才会使用全局异常进行处理,其他包下出现异常将不被处理

@ControllerAdvice(basePackages = "com.example.firstdemo.moudle1")

assignableTypes 指定具体的类,当该类中出现异常时,全局异常将进行处理

@ControllerAdvice(assignableTypes = TestExceptionController.class)

annotations 定义哪种类型可以使用全局异常进行处理,当设置为RestController时,普通返回视图的控制器类出现异常,将不会被处理,如果不指定则两种形式的类都会被处理

@ControllerAdvice(annotations = RestController.class)

相关文章

网友评论

      本文标题:SpringBoot2.1全局异常

      本文链接:https://www.haomeiwen.com/subject/uhkyfqtx.html