java 调用某个方法方法报错了之后为什么没有走到这个调用的catch中

代码是这样的
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());
    }
    }
    }
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值