加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

如何优雅的处理异常?SpringBoot全局异常与数据校验

发布时间:2019-01-29 19:09:39 所属栏目:建站 来源:JAVA柯尼塞克
导读:要思索的题目 在此刻的前后端交互中,凡是都类型了接口返回方法,如返回的接口状态(乐成|失败)以及要返回的数据在谁人字段取,可能说失败了往后提醒信息从接口那边返回,因此,假如想做全局非常,而且非常产生后能精确的返回给前端理会,那么必要非常发

编写controller模仿抛出营业非常

  1. @RestController  
  2. @RequestMapping("/user")  
  3. public class UserController {  
  4. @PostMapping(value = "/update")  
  5. Response<Boolean> update(User user){  
  6.  //todo 此处为模仿非常抛出  
  7.  if(true){  
  8.  throw new MyException("更新失败");  
  9.  }  
  10.  //todo 此处为模仿返回  
  11.  Response<Boolean> response = new Response<>();  
  12.  response.setCode(Code.SUCCESSED);  
  13.  response.setResult(true);  
  14.  return response;  
  15. }  

postMan模仿哀求接口,举办验证

怎样优雅的处理赏罚非常?SpringBoot全局非常与数据校验

数据绑定非常处理赏罚

凡是我们操纵数据的时辰,不只前端必要举办数据校验,后端也该当举办拦截和举办响应的错误提醒,JSR-303校验框架也是我们的一种选择。

编写实体`User`,并对属性举办注解节制

  1. public class User {  
  2.  @NotNull(message = "用户名不能为空")  
  3.  private String userName;  
  4.  private int age;  
  5.  //... 

全局非常节制类插手拦截

  1. @ControllerAdvice  
  2. public class GlobalExceptionHandler {  
  3.  private Logger logger = LoggerFactory.getLogger(GlobalExceptionHandler.class);  
  4.  @ExceptionHandler(value = BindException.class)  
  5.  @ResponseBody  
  6.  public Response<String> bindExceptionErrorHandler(BindException ex) throws Exception {  
  7.  logger.error("bindExceptionErrorHandler info:{}",ex.getMessage());  
  8.  Response<String> r = new Response<>();  
  9.  StringBuilder sb = new StringBuilder();  
  10.  FieldError fieldError = ex.getFieldError();  
  11.  sb.append(fieldError.getDefaultMessage());  
  12.  r.setMsg(sb.toString());  
  13.  r.setCode(Code.FAILED);  
  14.  return r;  
  15.  }  
  16.  //... 

编写节制器

  1. @RestController  
  2. @RequestMapping("/user")  
  3. public class UserController {  
  4.  @PostMapping(value = "/add")  
  5.  Response<User> add(@Validated User user){  
  6.  //todo 此处为模仿返回  
  7.  Response<User> response = new Response<>();  
  8.  response.setCode(Code.SUCCESSED);  
  9.  response.setResult(new User());  
  10.  return response;  
  11.  }  
  12.  //... 

postMan模仿哀求

不填写任何属性,模仿添加操纵,精确举办拦截和报错

怎样优雅的处理赏罚非常?SpringBoot全局非常与数据校验

项目布局预览:

怎样优雅的处理赏罚非常?SpringBoot全局非常与数据校验

末了

得当的步崆最好的,每个团队都应探索出本身的一套非常办理方案,本文所提仅针对营业非常,但愿各人也能有所收成

【责任编辑:庞桂玉 TEL:(010)68476606】
点赞 0

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读