我是靠谱客的博主 清脆野狼,最近开发中收集的这篇文章主要介绍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());
    }
    }
    }
    }

最后

以上就是清脆野狼为你收集整理的java 调用某个方法方法报错了之后为什么没有走到这个调用的catch中的全部内容,希望文章能够帮你解决java 调用某个方法方法报错了之后为什么没有走到这个调用的catch中所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(36)

评论列表共有 0 条评论

立即
投稿
返回
顶部