标签: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 来源: https://www.cnblogs.com/oktokeep/p/16596469.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。