网站建设简介是什么,sem公司,wordpress 无数据库版,wordpress顶部导航栏怎么创建概述
项目中经常会在方法A中调方法B#xff0c;如果B出现了异常#xff0c;A要获取到B的异常#xff0c;并且在接口中返回#xff0c;这是一个例子。大概就是需要发送消息到哪里#xff0c;仅支持邮件、微信#xff0c;其他的则出错#xff0c;错误信息用一个列表装着如果B出现了异常A要获取到B的异常并且在接口中返回这是一个例子。大概就是需要发送消息到哪里仅支持邮件、微信其他的则出错错误信息用一个列表装着然后返回。m和n是控制发送时是否出现异常很简单的看下代码就懂。
controller
/*** 多层异常处理*/GetMapping(testLinkedException3)public ResponseResultListString testLinkedException3(RequestParam(params) ListString params,RequestParam(m) int m,RequestParam(n) int n){return ResponseResult.success(serviceA.functionA(params, m, n));}serviceA
public ListString functionA(ListString params, int m, int n) {ListString msg new ArrayList();for (String param : params) {try{if(Objects.equals(param, 邮件)){serviceB.sendEmail(m);}else if(Objects.equals(param, 微信)){serviceB.sendWeChat(n);}else {throw new IllegalArgumentException(异常参数 param);}msg.add(成功发送-param);}catch (Exception e){msg.add(param 发送失败失败原因 e.getMessage());}}return msg;}serviceB
发送邮件
public boolean sendEmail(int n) {try{int res 10 / n;return res 0;}catch (Exception e){log.error(邮件发送异常参数{}, n, e);throw new MyException(邮件发送失败参数n);}}发送微信
public boolean sendWeChat(int n) {try{int res 10 / n;return res 0;}catch (Exception e){throw e;}}接口返回
正常处理的
参数
params: 邮件,微信
m: 1
n: 1响应
{code: 200,message: 响应成功,data: [成功发送-邮件,成功发送-微信]
}邮件失败微信成功
参数
params: 邮件,微信,QQ
m: 0
n: 1响应
{code: 200,message: 响应成功,data: [邮件发送失败失败原因邮件发送失败参数0,成功发送-微信,QQ发送失败失败原因异常参数QQ]
}传多一个qq
参数
params: 邮件,微信,QQ
m: 1
n: 1响应
{code: 200,message: 响应成功,data: [成功发送-邮件,成功发送-微信,QQ发送失败失败原因异常参数QQ]
}补充
异常抛出后如果被上层方法捕获后控制台是看不到报错信息的。所以需要log打印。