@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
* 主方法执行完毕>>>>>>>>>>>>>>>
*/
@Async异步方法对异常的处理,从内层向外层抛出机制的更多相关文章
- Python之异常抛出机制
异常抛出机制 : 常见的Python异常:
- SQLServer 异常捕获,回滚,再抛出
一个存储过程中多个更新操作,后面的更新操作出现异常,如果不手动回滚前面修改的数据是不会自动撤销的! BEGIN TRY BEGIN TRAN -- ..... COMMIT TRAN END TRY ...
- .NET异步操作学习之一:Async/Await中异常的处理
以前的异常处理,习惯了过程式的把出现的异常全部捕捉一遍,然后再进行处理.Async/Await关键字出来之后的确简化了异步编程,但也带来了一些问题.接下来自己将对这对关键字进行学习.然后把研究结果放在 ...
- Spring异常抛出触发事务回滚
Spring.EJB的声明式事务默认情况下都是在抛出unchecked exception后才会触发事务的回滚 /** * 如果在spring事务配置中不为切入点(如这里的切入点可以定义成test*) ...
- Java throw:异常的抛出怎么回事
到目前为止,你只是获取了被Java运行时系统抛出的异常.然而,程序可以用throw语句抛出明确的异常.Throw语句的通常形式如下: throw ThrowableInstance;这里,Thr ...
- JAVA 抛出与声明异常
在编程过程中,我们往往会遇到这种情况,在当前环境中无法解决,比如用户传入的参数错误,IO设备问题等.此时,就要从当前环境中抛出异常提交给上级来处理. 在JAVA语言中,使用throw关键字来抛出异常. ...
- (转)spring异常抛出触发事务回滚策略
背景:在面试时候问到事务方法在调用过程中出现异常,是否会传递的问题,平时接触的比较少,有些懵逼. spring异常抛出触发事务回滚策略 Spring.EJB的声明式事务默认情况下都是在抛出unchec ...
- Effective Java 第三版——73.抛出合乎于抽象的异常
Tips 书中的源代码地址:https://github.com/jbloch/effective-java-3e-source-code 注意,书中的有些代码里方法是基于Java 9 API中的,所 ...
- Java知多少(49)throw:异常的抛出
到目前为止,你只是获取了被Java运行时系统抛出的异常.然而,程序可以用throw语句抛出明确的异常.Throw语句的通常形式如下: throw ThrowableInstance;这里,Thr ...
- java的异常抛出和String类常用方法
一.异常抛出 异常是程序的异种非错误的意外情况,分为运行期异常(RuntimeException)和编译期异常(CheckedExcption) 处理异常可以用try——catch或自定义 impor ...
随机推荐
- 工商银行分布式服务C10K场景的解决方案
简介: 未来,中国工商银行将持续致力于 Dubbo 的金融级规模化应用. 作者:颜高飞,微服务领域架构师,主要从事服务发现.高性能网络通信等研发工作,擅长 ZooKeeper.Dubbo.RPC 协议 ...
- MySQL深潜|剖析Performance Schema内存管理
简介: 本文主要是通过对PFS引擎的内存管理源码的阅读,解读PFS内存分配及释放原理,深入剖析其中存在的一些问题,以及一些改进思路. 一 引言 MySQL Performance schema(PF ...
- Resin反序列化链分析
前言 Resin是一个轻量级的.高性能的开源Java应用服务器.它是由Caucho Technology开发的,旨在提供可靠的Web应用程序和服务的运行环境.和Tomcat一样是个服务器,它和hess ...
- dotnet 6 通过 DOTNET_ROOT 让调起的应用的进程拿到共享的运行时文件夹
我的应用是独立发布的,在用户的设备上不需要额外去安装 .NET 运行时.但是我的应用有一个需求是下载另一个应用作为插件,由本应用调起插件进程.本文告诉大家如何解决调用插件的进程时,赋值给插件进程运行时 ...
- SpringBoot使用JSch操作Linux
推荐使用Hutool的Jsch工具包(它用的连接池的技术) 一.SSH远程连接服务器 SSH更多见:http://t.csdnimg.cn/PrsNv 推荐连接工具:FinalShell.Xshell ...
- To Be Vegetable
求满足下述条件的 \(n\) 阶排列 \(a\) 的数目:对每个 \(i\),要么 \(a_i-i\le a_j-j+d\) 对所有 \(j\gt i\) 成立,要么 \(a_i\ge a_j\) 对 ...
- [从零学习C++][01]如何在Clion中定义多个main函数
在一个Clion项目中定义多个main函数编译的时候会报这个错误 显示就是main函数重复了,查阅了下好像可以通过修改CMakeList.txt来修改,将其定义成两个独立的executable即可 a ...
- 解锁高效创新:IPD策略如何重塑产品开发流程
IPD(集成产品开发)涵盖了产品从创意提出到研发.生产.运营等,包含了产品开发到营销运营的整个过程.围绕产品(或项目)生命周期的过程的管理模式,是一套生产流程,更是时下国际先进的管理体系.IPD(集成 ...
- 微信小程序 canvas 手写签名(2d)
canvas 2d 目前支持预览,不支持真机调试 index.wxml <canvas type="2d" id="canvas" bindtouchmo ...
- 一文搞懂docker容器基础:docker镜像管理,docker容器管理
目录 一.系统环境 二.docker 2.1 Docker 概述 2.2 Docker 平台 2.3 我可以使用 Docker 做什么? 2.3.1 快速.一致地交付您的应用程序 2.3.2 响应式部 ...