范文健康探索娱乐情感热点
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

SpringBoot全局异常处理

  最恶心的事莫过于,后台出现异常返回的是一坨错误码,如下图。前端的人一定很抓狂。今天我们看看Java是如何处理异常的,更友好的返回错误信息。就拿做小程序接口时的一个demo。
  基本概念
  当然我们是基于spring简单的使用,首先我们了解用到的几个注解:@ControllerAdvice  对Controller的一个增强,可以对异常进行统一处理 @ExceptionHandle 捕获所有控制器里面的异常开始搞起来
  首先定义个全局的异常处理类:package com.fms.config.exception;  import com.fms.config.Constant; import com.fms.config.exception.customer.wx.WxException; import com.fms.config.exception.customer.WxJsCodeEmptyException; import com.fms.http.BaseResponseJson; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ResponseBody;   @ControllerAdvice public class ExceptionHandler {      private static final Logger logger = LogManager.getLogger(ExceptionHandler.class);      /**      * 处理自定义的业务异常      *      * @return      */     @org.springframework.web.bind.annotation.ExceptionHandler(Exception.class)     @ResponseBody     public BaseResponseJson handerException(Exception e) {         logger.info(e);         return BaseResponseJson.fail(Constant.EX_UNKNOW_EXCEPTION, "未知错误");      }      /**      * 处理微信相关的异常      *      * @return      */     @org.springframework.web.bind.annotation.ExceptionHandler(WxException.class)     @ResponseBody     public BaseResponseJson handerWxException(WxException e) {         if (e instanceof WxJsCodeEmptyException) {//微信小程序登录时获取的 js_code 出错             return BaseResponseJson.fail(Constant.WX_JS_CODE_EMPTY, Constant.WX_JS_CODE_EMPTY_MSG);         } else {          }         logger.info(e);         return BaseResponseJson.fail(Constant.EX_UNKNOW_EXCEPTION, "微信API出错");      }     /**      * 其他业务异常      */   }
  WxException是自定义的一个微信异常类,WxException是微信相关的异常的基类,如:WxJsCodeEmptyException 。BaseResponseJson是返回给前端的信息。package com.fms.http;   import com.fasterxml.jackson.annotation.JsonProperty; import com.fms.enum_pack.ResponseCode; import java.io.Serializable;  /**  * Java封装接口返回统一格式  */ public class BaseResponseJson implements Serializable {      private static final long serialVersionUID = -3948389268046368059L;     @JsonProperty()     private String code;     @JsonProperty()     private String msg;     @JsonProperty()     private Object data;      public static BaseResponseJson success( ) {         return resultData(ResponseCode.SUCCESS.val(), ResponseCode.SUCCESS.msg());     }     public static BaseResponseJson success(Object data) {         return resultData(ResponseCode.SUCCESS.val(), ResponseCode.SUCCESS.msg(), data);     }      public static BaseResponseJson success(Object data, String msg) {         return resultData(ResponseCode.SUCCESS.val(), msg, data);     }      public static BaseResponseJson fail(String msg) {         return resultData(ResponseCode.ERROR.val(), msg);     }     public static BaseResponseJson fail() {         return resultData(ResponseCode.ERROR.val(), ResponseCode.ERROR.msg());     }      public static BaseResponseJson fail(String code, String msg) {         return resultData(code, msg, null);     }      public static BaseResponseJson fail(String code, String msg, Object data) {         return resultData(code, msg, data);     }      private static BaseResponseJson resultData(String code, String msg, Object data) {         BaseResponseJson resultData = new BaseResponseJson();         resultData.setCode(code);         resultData.setMsg(msg);         resultData.setData(data);         return resultData;     }      private static BaseResponseJson resultData(String code, String msg) {         BaseResponseJson resultData = new BaseResponseJson();         resultData.setCode(code);         resultData.setMsg(msg);         return resultData;     }      public String getCode() {         return code;     }      public void setCode(String code) {         this.code = code;     }      public String getMsg() {         return msg;     }      public void setMsg(String msg) {         this.msg = msg;     }      public Object getData() {         return data;     }      public void setData(Object data) {         this.data = data;     } } 在Controller里抛出异常   if (auth_code2SessionRequest == null || StringUtils.isEmpty(auth_code2SessionRequest.getJs_code())) {             throw new WxJsCodeEmptyException();         }返回结果:{"code":"10002","msg":"微信小程序登录时获取的 js_code为空","data":null}最后:
  这样就比较友好了,当然根据业务还可以继续封装。

频现拼写翻译等内容错误莫让词典类APP误人子弟在手机APP上查单词背单词,已成为当下大学生中学生及英语学习爱好者的习惯,APP上的电子词典几乎取代了大部头纸质词典。但新华视点记者调查发现,不少动辄用户使用量过亿的英语学习类AP我今天也学会用支付宝了在当下这个信息飞速发展的时代,信息化以更快更便捷的方式,传递着人类创造文明的发展。同时,也给人类提供了快捷的交往手段,推动了人类生活的共同富裕和繁荣。自从有了手机后,它不仅仅是通话海雀虽小,五脏俱全华为智选HQ5S海雀AI全景摄像头体验在智能家居高速发展的今天,人们除了享受AI智能带来的方便的同时,更多人开始注重起了家庭隐私及安全问题,从而也诞生了很多保护家庭安全的科技数码产品,在没有宝宝之前,我对智能摄像头从来腾讯司庆发放NFT藏品,它到底有什么作用?记者司林威11月11日,腾讯公司为其员工发放了23周年纪念版NFT。根据界面新闻了解,腾讯官方将其称为数字藏品,由腾讯旗下NFT交易平台幻核团队设计发行,腾讯旗下联盟链至信链提供链华为手机怎么设置视频铃声?华为EMUI9。1就增加了视频铃声的功能,接下来我们来看看怎么设置视频铃声吧。1打开华为手机的设置声音,选择卡1或卡2的来电铃声进行设置。如下图所示2我们进入选择铃声的页面中,点击安防监控摄像机云储存如何开通,可以保存多少视频云储存是网络WiFi摄像机独有的功能,它是利用互联网视频数据传输到网盘,从而达到大容量存储的目的。也就是说没有WiFi的环境是使用不了云盘功能的,只能使用本地存储。安防监控摄像机的iPhone13pro和华为P50pro应该买哪个?iPhone13pro,是今年整个苹果旗舰系列比较超值的一款手机,整体配置相比于苹果13标准版升级幅度巨大,采用的是a15芯片,GPU性能提升20。但iPhone13pro的价格比需要打击电商吗?首先要搞清楚电商和实体店的区别在那些方面。我觉得最大的区别是实体店让富裕了房东,而电商是富裕了平台。电商主要是因为互联网的普及,应对市场需求顾客群体量大辐射广,利用价格战营销手段多为什么华为手机能站稳高端,别的国产手机就不能?谢邀。原因其实很简单,持续增长的科技投入和不断巩固的品牌建设。不仅手机,华为进入哪个行业都要成为第一的这股蛮劲啊,你想让它不成为高端都难。其他的为什么不能就不说了,我都没用过它们的10月新发布手机性能排行榜vivoT1上榜近日,根据多家科技媒体的消息,鲁大师数据中心公布了10月安卓新发布手机性能排行榜,数据来自鲁大师APP10。01日10。31日的数据,榜单只筛选出在这期间新发布的机型。部分新机测试iPhone13Pro最新售价确认,256GB版跌至新低价,iPhone13不香了如果购买的是普通安卓手机,使用个两年可能就会考虑更换新机了,但如果使用的是苹果手机,可能会持续使用四五年,因为长期使用的情况下,苹果手机确实要比安卓手机更为流畅,这也是不少消费者们
使用一年半左右的红米K30S至尊纪念版手机使用感想现在使用的就是这款手机,当时购买的时候觉得这款手机没啥短板,小米旗舰手机有的功能它都有,电池容量也大,本人也不玩游戏,想着足够用个四五年了大笑。当时抢的时候是真费劲啊,大概得两个多什么手机适合你用?相信各位小伙伴在买手机的时候都会有选择困难症,除非你家是拆迁户笑哭,毕竟现在市场上手机的种类还是很多的,而且价格也挺高的,要买到一款心仪的手机还是挺不容易的。今天小编就为你们解决这2022买手机的不妨考虑这三款,款款都是真旗舰,堪称十全九美正所谓买强不买弱,以下我总结的机型大家可根据个人品牌偏好使用需求综合挑选。一三星SAMSUNGGalaxyS21Ultra转转6858起亮点1。搭载骁龙888处理器,后置一亿像素。克劳迪娅韦尔诺蒂中国科技创新成就举世瞩目来源人民日报全球经济复苏和社会发展面临严峻挑战,各国加强创新合作探讨应对人类共同挑战,比以往任何时候都更加重要。世界期待中国在这一进程中作出更大贡献近年来,中国科技创新取得举世瞩目这些年的半导体我国的科技振兴之路还是早早就有探索了,只是我们大众只是后知后觉罢了。中国牛市的最后一波后,科技领域发生了几件大事其中之一就是恩智浦以股票加现金方式并购飞思卡尔,触发了垄断条款后由北Python中argsargs到底是什么有啥区别怎么用args不定参数,元组,如(1,2,n)kwargs传入键值对,字典(例如num111,num222)先看示例1deftest(a,b,c3,args)print(a)print(美团21年业绩交流纪要220325Q外卖方面,政策监管下佣金收入降低,未来是否会继续下降以及应对措施?A公司于21年5月发布了最新的外卖抽佣模式,在业绩报告中也进行了相应的分拆,分为技术服务和外卖服务,技术服务费的再次确定!vivoPad即将发布,外观设计和硬件配置曝光3月25日消息,vivo智能终端对旗下首款平板电脑进行预热它的名字叫vivoPad,采用四边等宽全面屏设计,拥有全金属一体化机身。后置1300万双摄组合,支持手写笔和触控键盘等配件三星2022年03月26日新消息三星三星2022年03月26日新消息变化在细节之中移动影像新体验三星GalaxyS22Ultra三星S22与iPhoneSE3全面对比优缺点很明显搭载1。08亿像素主摄和5000毫鸿蒙新机卖4000,华为手机这么贵?背后究竟是什么原因?如今华为品牌可以说广受国人的关注,不仅仅是因为国人支持国货的声音越来越大,同时华为品牌受到巨大争议也是一个最重要的原因,而这个原因则是华为手机一直以来都很贵,这到底是为什么呢?比如索尼SRS钛极客很多音乐发烧友在体验音箱产品的时候,都会经常提到一个名词沉浸感,这个在外人听起来有些玄学的词汇,其实也很好理解。当一款音箱产品能够精准还原音乐中的声音方位等信息的时候,就会让人感觉