SpringBoot全局异常处理
最恶心的事莫过于,后台出现异常返回的是一坨错误码,如下图。前端的人一定很抓狂。今天我们看看Java是如何处理异常的,更友好的返回错误信息。就拿做小程序接口时的一个demo。
基本概念
当然我们是基于spring简单的使用,首先我们了解用到的几个注解:ControllerAdvice对Controller的一个增强,可以对异常进行统一处理ExceptionHandle捕获所有控制器里面的异常开始搞起来
首先定义个全局的异常处理类:packagecom。fms。config。exception;importcom。fms。config。Constant;importcom。fms。config。exception。customer。wx。WxException;importcom。fms。config。exception。customer。WxJsCodeEmptyException;importcom。fms。http。BaseResponseJson;importorg。apache。logging。log4j。LogManager;importorg。apache。logging。log4j。Logger;importorg。springframework。web。bind。annotation。ControllerAdvice;importorg。springframework。web。bind。annotation。ResponseBody;ControllerAdvicepublicclassExceptionHandler{privatestaticfinalLoggerloggerLogManager。getLogger(ExceptionHandler。class);处理自定义的业务异常returnorg。springframework。web。bind。annotation。ExceptionHandler(Exception。class)ResponseBodypublicBaseResponseJsonhanderException(Exceptione){logger。info(e);returnBaseResponseJson。fail(Constant。EXUNKNOWEXCEPTION,未知错误);}处理微信相关的异常returnorg。springframework。web。bind。annotation。ExceptionHandler(WxException。class)ResponseBodypublicBaseResponseJsonhanderWxException(WxExceptione){if(einstanceofWxJsCodeEmptyException){微信小程序登录时获取的jscode出错returnBaseResponseJson。fail(Constant。WXJSCODEEMPTY,Constant。WXJSCODEEMPTYMSG);}else{}logger。info(e);returnBaseResponseJson。fail(Constant。EXUNKNOWEXCEPTION,微信API出错);}其他业务异常}
WxException是自定义的一个微信异常类,WxException是微信相关的异常的基类,如:WxJsCodeEmptyException。BaseResponseJson是返回给前端的信息。packagecom。fms。http;importcom。fasterxml。jackson。annotation。JsonProperty;importcom。fms。enumpack。ResponseCode;importjava。io。Serializable;Java封装接口返回统一格式publicclassBaseResponseJsonimplementsSerializable{privatestaticfinallongserialVersionUID3948389268046368059L;JsonProperty()privateStringcode;JsonProperty()privateStringmsg;JsonProperty()privateObjectdata;publicstaticBaseResponseJsonsuccess(){returnresultData(ResponseCode。SUCCESS。val(),ResponseCode。SUCCESS。msg());}publicstaticBaseResponseJsonsuccess(Objectdata){returnresultData(ResponseCode。SUCCESS。val(),ResponseCode。SUCCESS。msg(),data);}publicstaticBaseResponseJsonsuccess(Objectdata,Stringmsg){returnresultData(ResponseCode。SUCCESS。val(),msg,data);}publicstaticBaseResponseJsonfail(Stringmsg){returnresultData(ResponseCode。ERROR。val(),msg);}publicstaticBaseResponseJsonfail(){returnresultData(ResponseCode。ERROR。val(),ResponseCode。ERROR。msg());}publicstaticBaseResponseJsonfail(Stringcode,Stringmsg){returnresultData(code,msg,null);}publicstaticBaseResponseJsonfail(Stringcode,Stringmsg,Objectdata){returnresultData(code,msg,data);}privatestaticBaseResponseJsonresultData(Stringcode,Stringmsg,Objectdata){BaseResponseJsonresultDatanewBaseResponseJson();resultData。setCode(code);resultData。setMsg(msg);resultData。setData(data);returnresultData;}privatestaticBaseResponseJsonresultData(Stringcode,Stringmsg){BaseResponseJsonresultDatanewBaseResponseJson();resultData。setCode(code);resultData。setMsg(msg);returnresultData;}publicStringgetCode(){returncode;}publicvoidsetCode(Stringcode){this。codecode;}publicStringgetMsg(){returnmsg;}publicvoidsetMsg(Stringmsg){this。msgmsg;}publicObjectgetData(){returndata;}publicvoidsetData(Objectdata){this。datadata;}}在Controller里抛出异常if(authcode2SessionRequestnullStringUtils。isEmpty(authcode2SessionRequest。getJscode())){thrownewWxJsCodeEmptyException();}返回结果:{code:10002,msg:微信小程序登录时获取的jscode为空,data:null}最后:
这样就比较友好了,当然根据业务还可以继续封装。
情人节将至,魅族PANDAER生活研究所套装产品至高8。7折IT之家2月11日消息,随着2月14日情人节的临近,魅族PANDAER生活研究所套装产品现已推出全新活动。魅族表示,2月11日2月15日,用户前往魅族商城、魅族天猫官方旗……
三(上)复习资料(四字词语)绚丽多彩高高飘扬一本正经白发苍苍惹人注意随风飘动惹人喜爱自言自语研究成果手脚并用缕缕炊烟满载而归欢蹦乱跳阳光明媚闻鸡起舞纪律严明争奇斗艳芬芳迷人留心观察欣然怒……
谷歌推出RobotoSerif免费字体,可使屏幕上的文字更加感谢IT之家网友Lau37的线索投递!IT之家2月20日消息,互联网自诞生起已经发生了很多变化,最初只有少数几种字体被设计用来帮助在低分辨率屏幕上阅读文本,使眼睛更舒服。……
印度计划在2020年代末推出6G网络服务,目前5G还没上线IT之家5月18日消息,据HindustanTimes报道,在印度电信监管局(TRAI)的庆典上,印度总理宣布,计划在2020年代末推出6G服务。印度政府已经成立了一个工……
卧薪尝胆苏教版说课稿通过对语言文字的朗读感悟来理解课文,读好课文。下面是小编为大家整理的卧薪尝胆苏教版说课稿,欢迎阅读。一、说教材本课是一篇寓含深刻道理的中国历史故事。课文叙述了春秋时……
涉嫌超范围采集个人隐私信息,16款移动App被点名IT之家4月8日消息,据新华社报道,国家计算机病毒应急处理中心近期通过互联网监测发现16款移动App存在隐私不合规行为,违反网络安全法、个人信息保护法相关规定,涉嫌超范围采集个……
用户不存在,王思聪微博账号现已无法查看感谢IT之家网友机智喵、名字重复了的线索投递!IT之家4月27日消息,今日晚间,原王思聪微博账号页面显示,该账号因被投诉违反法律法规和《微博社区公约》的相关规定,现已无法……
村田福井工厂已经全面复工,停工对MLCC供货产生的影响有限由于新冠疫情关系,在8月最后一周,全球第一大MLCC制造商村田停工了位于日本福井县的MLCC主力制造工厂武生事务所,并于9月1日启动了全面复工。外界普遍推测,此时正值iPhon……
滥竽充数教学反思范文寓言是一种短小简炼但又寓意深刻的文学体裁。它的特点:篇幅短小,语言通俗,有一定的教育意义。《滥竽充数》就是一则寓言故事,告诉大家:没有真才实学,靠欺骗假冒过日子是长不了的。在教……
抖音疑似未成年用户直播消费将被弹窗提醒,要求账号实名认证IT之家5月26日消息,今日,抖音宣布,在落实青少年模式无法看播、充值、消费等基础上,对于没有及时开启青少年模式的用户,再次升级相关拦截能力。抖音表示,基于用户基本信息、……
国内第四大运营商来了!中国广电5GSIM卡首曝IT之家5月25日消息,中国广电5G互联互通正在全国各地区陆续实现,192号段的放号也不远了。近日,通信人家园网有网友曝光了疑似中国广电5GSIM卡的照片,该网友称坐标位……
我很整洁教学设计教材分析:课题选自义务教育课程标准实验教材(人民教育出版社)《品德与生活》一年级下册第三单元的第一课,在内容上有所拓展。保持整洁是日常生活中的重要习惯与修养,对于培养低年……
主题上小学所引起的困惑实录一:在大班的最后阶段,我们开展了上小学的主题活动,为的是激发幼儿入小学的愿望,在一次老师组织的集体谈话课上,讨论到幼儿园与小学的不同时,浩浩举起小手强烈要求回答,他说……
欧洲最大酒店集团法国雅高已支持支付宝小程序预订IT之家12月3日消息今天,欧洲最大的酒店集团法国雅高酒店集团正式以小程序的方式入驻支付宝,用户在支付宝上搜索雅高或accor即可进入小程序,预订该集团旗下全系列、不同档次的酒……
仅限移动用户!支付宝充值12GB流量仅需12元IT之家12月2日消息临近双12,支付宝在充值中心推出了12元购买12GB的流量的活动,本次活动仅限移动用户。实际上,在上次双11活动期间,支付宝还曾做过一次11元购买1……
12306再回应账号在暗网遭出售系登陆第三方平台时泄露IT之家12月28日消息今日下午,微博等平台上有爆料消息称,疑似12306数据在暗网上遭到兜售,包括60万账户信息、410万联系人数据。12306于今日傍晚进行了回应,称网传信……
(更新)网曝12306账号暗网泄露60万账号410万联系人数18:30更新:中国铁路辟谣:网传信息不实,铁路12306网站未发生用户信息泄漏。铁路部门提醒广大旅客,请通过铁路12306官方网站(www。12306。cn)和铁路12306……
蓝暖男来了!海空蓝复兴号内饰抢先看IT之家1月4日消息近期中国铁路公布了复兴号家族几位新成员的尝鲜版官方写真,包括蓝暖男CR300BF、绿巨人CR200J、超长长长陆地航班CR400AFB型和CR400BFB型……
支付宝沾福气卡漏洞让好友只保留敬业福花花卡IT之家1月28日消息根据网友的投稿,他发现了支付宝沾福气卡一个小漏洞,只要你拥有一个有敬业福花花卡的小伙伴,先让他把非稀有卡送掉,然后就可以去沾他的稀有卡了,过程很简单。……
怀念母亲说课稿一、说教材《怀念母亲》是人教版六年级上册中的第六课,是季羡林所写,课文以回忆的形式,介绍了作者对两位母亲一位是亲生母亲,一位是祖国母亲同样崇高的敬意和同样真挚的爱慕,充分……
支付宝上线沾福气卡复制好友花花卡敬业福IT之家1月28日消息根据支付宝官方的消息,官方上线了一个叫沾福气的小道具(扫福或到店支付宝消费时都有机会获取),使用沾福气,就可以随机复制一张好友的福卡。据介绍,在1月……
哈啰回应顺风车诈骗案基本属实,系团伙诱导用户作案IT之家8月1日消息据央视财经消息,近日,杭州的王先生通过哈啰出行叫了一辆顺风车,有车主接单后,打来电话让他先点下确认上车,说是怕被爽约白跑一趟,于是王先生照做了并支付了379……
最危险的路,是假冒家电维修的套路IT之家6月19日消息今日,微信派官方发文《最危险的路,是假冒家电维修的套路》,提醒消费者注意辨别家电售后维修公众号中的李鬼,因为这些李鬼的背后诈骗套路一套一套的,大家千万不要……
事物的正确答案不止一个教学设计范文【教学目的要求】1、读懂课文,了解文中事物的正确答案不止一个的观点。理解由一个具体实例引出论点的写法。2、把握文章的结构,理解文章的思路,理解围绕中心讲道理,摆事实……