ControllerAdvice Spring全局异常处理
ControllerAdvice作用
使用@ControllerAdvice
能够在不侵入业务逻辑的情况下,进行业务异常的处理,尤其是针对于业务处理时,需要用异常的方式向前台传输异常编码的情况下,用@ControllerAdvice
能够非常完美的实现异常的处理。
ControllerAdvice代码实现
1
|
/**
|
注意点:
- 类名上要加上
@ControllerAdvice
注解,用于声明该类是用来全局异常处理的。 - 方法上要使用以下3个注解
@ExceptionHandler
,@ResponseStatus
,@ResponseBody
。其中@ExceptionHandler
用来声明该方法是用来拦截那种异常的;@ResponseStatus
是用来向前台返回何种http
异常码;@ResponseBody
用来声明返回体。 - 该类中的方法的返回值、方法名、方法参数没有固定的格式,可以自定义,只要只不过方法参数中一般至少会带一个异常,因为返回值中一般会根据异常中的信息进行返回。
Controller代码实现
@Controller
类无需特殊处理,还是普通的代码处理方式,我最开始就是以为Controller
类中的各个方法上也要带上@ExceptionHandler
注解,导致晚上失眠,始终想不通到底哪里出问题了。
这里放一个我的代码
1
|
/**
|
注意点:
- 当前代码中,抛异常的位置是放在
Controller
层的,其实在Service
层抛出异常一样会被Spring
全局异常捕获的,不用担心。
返回信息展示
SpringMVC url中接收中文参数乱码解决方案