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


    @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
    * 主方法执行完毕>>>>>>>>>>>>>>>
    */

  • 相关阅读:
    数组常用遍历方法总结
    文本控制行数,超出省略号显示
    数据结构入门
    数论函数补充 公式推导
    几何入门合集 gym101968 problem F. Mirror + gym102082 Problem F Fair Chocolate-Cutting + gym101915 problem B. Ali and Wi-Fi
    COCI 2018/2019 CONTEST #2 T4 Maja T5Sunčanje Solution
    数论函数
    数论入门
    USACO1.4 1.5 搜索剪枝与数字 洛谷OJ P1214 P1215 P1217 P1218
    USACO Section 1.3 题解 (洛谷OJ P1209 P1444 P3650 P2693)
  • 原文地址:https://www.cnblogs.com/oktokeep/p/16596469.html
Copyright © 2020-2023  润新知