@ControllerAdvice与@ExceptionHandler注解

@ControllerAdvice是放在一个类上面做注解,

  • 返回string或者json需要@ResponseBody

  • 用RestControllerAdvice,就不用加@ResponseBody了

@ExceptionHandler用来修饰这个类里面的方法,@ExceptionHandler括号里面可以加入详细的异常类型,如这种形式:@ExceptionHandler({IOException.class} )(花括号里面可以放入自定义异常的class,比如你已经定义了一个缺少servlet请求参数抛出的异常,那么就可以在这个注解的括号里写{MissingServletRequestParameterException.class} ) 

这里有个注解:@ResponseStatus注解有两种用法,一种是加载自定义异常类上,一种是加在目标方法中

那我们首先类说一下加在目标方法上的这种情况,注解中有两个参数,value属性设置异常的状态码,reaseon是异常的描述,

需要重点注意的是不管该方法是不是发生了异常,将@ResponseStatus注解加在目标方法上,一定会抛出异常。如果只是为了指示返回状态码,最好不要添加reason属性。
如果添加了reason属性,且reason不为"",且code > 0(哪怕状态码是200),会对当前请求走错误处理。但是如果没有发生异常的话方法还是会正常执行完毕。


第二种是将@ResponseStatus注解加在自定义异常类上

  

下图是抛出异常后页面的显示

 

 

还有另一种写法  @ExceptionHandler(value = Exception.class)这种的话你就可以在方法里面去判断具体是哪种异常,然后具体异常问题具体分析。

比如这个里面的操作,(EStatusCode是写的一个枚举类,里面是一些状态码提示信息等等)


                
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值