首页 > 其他分享 >@Async异步方法对异常的处理,从内层向外层抛出机制

@Async异步方法对异常的处理,从内层向外层抛出机制

时间:2022-08-17 19:13:12浏览次数:55  
标签:testAsync 异步 System 内层 println test Async 执行 out

@Async异步方法对异常的处理,从内层向外层抛出机制

@RequestMapping(value = "/test", method = RequestMethod.GET)
    public String test(){
        try {
            System.out.println("主方法执行开始>>>>>>>>>>>>>>>");
            //myService依赖注入进来
            myService.test();
            System.out.println("主方法执行完毕>>>>>>>>>>>>>>>");
        }catch (Exception e) {
            System.out.println("主方法异常>>>>>>>>>>>>>>>");
            e.printStackTrace();
            return "fail";
        }
        return "success";
    }
    

    //MyService.java
    public void test() throws Exception{
        System.out.println("开始执行test");
        try{
            testAsync();
        }catch (Exception e) {
            System.out.println("test service异常>>>>>>");
            e.printStackTrace();
            throw e;
        }
        System.out.println("结束执行test");

    }

    @Async
    public void testAsync() throws Exception{
        System.out.println("开始执行testAsync");
        try{
            int i = 1/0;
        }catch (Exception e) {
            System.out.println("testAsync service异常>>>>>>");
            e.printStackTrace();
            //关键,在异步方法中也可以抛出异常
//            throw e;
        }
        System.out.println("结束执行testAsync");
    }

DEMO测试结论:

/*
*CASE1:在testAsync方法中保留:throw e;
* http://localhost:8080/proj/test
* 页面输出:fail
* 主方法执行开始>>>>>>>>>>>>>>>
* 开始执行test
* 开始执行testAsync
* testAsync service异常>>>>>>
* test service异常>>>>>>
* 主方法异常>>>>>>>>>>>>>>>
*
*
*CASE2:在testAsync方法中注释:throw e;
* testAsync方法注释之后,运行的效果:
* http://localhost:8080/proj/test
* 页面输出:success
* // throw e;
*
* 主方法执行开始>>>>>>>>>>>>>>>
* 开始执行test
* 开始执行testAsync
* testAsync service异常>>>>>>
* 结束执行testAsync
* 结束执行test
* 主方法执行完毕>>>>>>>>>>>>>>>
*/

 

标签:testAsync,异步,System,内层,println,test,Async,执行,out
From: https://www.cnblogs.com/oktokeep/p/16596469.html

相关文章

  • Python爬虫之多线程异步爬虫,非常详细
    Python爬虫之多线程爬虫在使用Python的过程中,我们可能遇到这样一个场景,需要下载某一个网站上的多个资源;例如:我们想下载豆瓣电影Top250所有的宣传图片具体代码如下......
  • 奇淫巧技,CompletableFuture 异步多线程是真的优雅
     一个示例回顾Future一些业务场景我们需要使用多线程异步执行任务,加快任务执行速度。JDK5新增了Future接口,用于描述一个异步计算的结果。虽然Future以及相关使用......
  • 多线程和异步
    多线程和异步异步方法—Async、Await 一:前言1.所有带有Async关键字的异步方法返回类型:① Task<T>:如果调用方法想通过调用异步方法获取一个T类型的返回值,......
  • Java多线程开发系列之五:Springboot 中异步请求方法的使用
    Springboot中异步线程的使用在过往的后台开发中,我们往往使用java自带的线程或线程池,来进行异步的调用。这对于效果来说没什么,甚至可以让开发人员对底层的状况更清晰,但是对......
  • MultipartFile上传文件异步处理时的java.io.FileNotFoundException
    参考:https://javajgs.com/archives/26157一.背景1-1需求前端上传Word文档,后端将接收到的Word文档①上传到文件服务器②将Word转为Pdf。1-2方案因为Word转Pdf的耗时......
  • 关于Angular 管道中异步数据处理的方式
    管道使用就不赘述了,不清楚可以参考官方文档;1.新建一个service文件并添加一个异步请求,记得引入Injectable:   2.新建一个管道pipe文件,自定义管道,根据需求变更返回内......
  • async...await在tcp通讯中的正确用法
    引言编程能力在不断的总结中进步以及成长,最近的半年里,对之前的开源项目代码进行回归,在重构的过程中进行了很多思考,很多次都想放弃重构,毕竟一个已经在使用的项目......
  • HttpClient.PatchAsJsonAsync - dotnet/runtime 项目贡献小记
    TL;DR迫于PatchAsJsonAsync方法缺失,我给dotnet/runtime项目贡献了相关的API,可惜要到.NET7才能用上。https://github.com/dotnet/runtime/pull/60672正文同事小......
  • 如何让 useEffect 支持 async...await?
    本文是深入浅出ahooks源码系列文章的第六篇,该系列已整理成文档-地址。觉得还不错,给个star支持一下哈,Thanks。本文已收录到个人博客中,欢迎关注~背景大家在使用useEf......
  • JavaScript 异步函数的 Promisification 处理
    Promisification是一个很长的词,表示一个编程范式的转变,即将接受回调的函数转换为一个返回类型为Promise的函数。我们现实的开发项目中经常需要这种转换,因为许多函数和......