概述
代码是这样的
public class test{
private Logger logger = LoggerFactory.getLogger(this.getClass());
/**
- 异步发送邮件
**/
@Async
@Override
public void sendEmailAsync(List testPOS, String status){
for (testPO testPO : testPOS) {
BaseRequestDto requestDto = new BaseRequestDto();
SendMailReqDto reqDto = new SendMailReqDto();
boolean statusFlag = true;
try {
reqDto.setContentType(“HTML”);
reqDto.setContent(“您好,感谢您光顾我的博客,希望我们一同成长,这是邮件内容”);
reqDto.setMailTitle(“邮件标题”);
reqDto.setFromNickName(“发送人名称”);
reqDto.setToMailAddress(“aa@123.com”);
requestDto.setRequest(reqDto);
BaseResponseDto dto = mailService.sendMail(requestDto);
testMapper.updateStatus(status, testPO.getId());
} catch (Exception e){
logger.info(“邮件发送之后遇到异常”);
status = EmailNotifyStatus.EXCEPTION.getValue();
testMapper.updateStatus(status, testPO.getId());
}
}
}
}
这样会发现,假设我邮箱地址填的不对或者其他有错误,后台会报错,报错之后会接着往下走,不会跳到catch之后的代码块,经过一通操作,又是在方法上加throw,又是改方法返回类型的,最后发现是因为调用的sendMail方法是在其方法内部加了个try catch 异常在内部处理了,抛出来之后到我们写的调用方法之后还是会继续走;那问题找到了,如何解决呢,需要通过调用sendMail方法之后返回的code码,正确的走正确的数据应该保存的流程,错误的走错误数据应该保存的流程。
修改之后:
public class test{
private Logger logger = LoggerFactory.getLogger(this.getClass());
/**
- 异步发送邮件
**/
@Async
@Override
public void sendEmailAsync(List testPOS, String status){
for (testPO testPO : testPOS) {
BaseRequestDto requestDto = new BaseRequestDto();
SendMailReqDto reqDto = new SendMailReqDto();
boolean statusFlag = true;
try {
reqDto.setContentType(“HTML”);
reqDto.setContent(“您好,感谢您光顾我的博客,希望我们一同成长,这是邮件内容”);
reqDto.setMailTitle(“邮件标题”);
reqDto.setFromNickName(“发送人名称”);
reqDto.setToMailAddress(“aa@123.com”);
requestDto.setRequest(reqDto);
BaseResponseDto dto = mailService.sendMail(requestDto);
if(“0”.equals(dto.getCode())){
status = “发送成功”;
logger.info(“发送邮件成功”);
} else {
status = “发送失败”;
statusFlag = false;
logger.info(“发送邮件报错”);
}
testMapper.updateStatus(status, testPO.getId());
} catch (Exception e){
logger.info(“邮件发送之后遇到异常”);
status = “发送失败”;
if(statusFlag){
testMapper.updateStatus(status, testPO.getId());
}
}
}
}
最后
以上就是清脆野狼为你收集整理的java 调用某个方法方法报错了之后为什么没有走到这个调用的catch中的全部内容,希望文章能够帮你解决java 调用某个方法方法报错了之后为什么没有走到这个调用的catch中所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复