问题描述:服务端有异常信息,导致调用方,获取结果为null。(虽然异常,但是未让程序停止。调用方拿到 状态码是200)
解决办法:用springMVC的 @ControllerAdvice注解拦截请求+@ExceptionHandler注解拦截异常。
拦截异常信息。返回一个统一的错误json信息。
名词解释:(具体请看https://docs.spring.io/spring/docs/current/javadoc-api/官方文档介绍)
@ControllerAdvice:其应用在所有通过@RequestMapping注解的方法。 该注解作用对象为TYPE,包括类、接口和枚举等,在运行时有效,并且可以通过Spring扫描为bean组件。 其可以包含由@ExceptionHandler、@InitBinder 和 @ModelAttribute标注的方法,可以处理多个Controller类,这样所有控制器的异常可以在一个地方进行处理。
@ExceptionHandler:该注解作用在方法层面。拦截所有方法的异常。 该注解作用对象为方法,并且在运行时有效,value()可以指定异常类。由该注解注释的方法可以具有灵活的输入参数,详情请看官方文档。上边有链接。
代码如下:
@ResponseBody @ControllerAdvice public class ExceptionHandlerAdvice { private Logger log = Logger.getLogger(this.getClass()); /** * 拦截所有异常信息。 * @param exception * @return */ @ExceptionHandler(value = Exception.class) public String exception(Exception exception) { exception.printStackTrace(); return ResponseHelp.responseApiErrorText("999999", exception.toString()); } }
参考文档:https://www.cnblogs.com/shuimuzhushui/p/6791600.html