为什么exception无法捕获spring 中proceedingJoinPoint类中的 proceed的异常?

在Spring AOP的环绕通知控制事务时,使用proceedingJoinPoint类中的 proceed 放行原始方法时需要抛出一个异常,但只能使用Throwable捕获

0

1个回答

Spring AOP异常捕获原理:
被拦截的方法,须显式的抛出异常,且不能做任何处理,
这样AOP才能捕获到方法中的异常,进而进行回滚。
换句话说,就是在Service层的方法中,不需要使用 try...catch
或者在catch中的最后加上 throw new RuntimeException(); 这样程序才会被AOP捕获,进而进行回滚。

1
qq_23126581
玄元复始道生初,守一无穷尽万物 回复devmiao: 我不是大牛哦,很菜的。向你们学习呢
8 个月之前 回复
devmiao
见了你女王大人喵姐还不跪下 说的很多,给大牛点赞
8 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
利用spring aop统一处理异常和打日志
利用spring aop统一处理日常和打日志spring aop的概念,很早就写博客介绍了,现在在工作中真正使用。我们很容易写出的代码我们很容易写出带有很多try catch 和 logger.warn(),logger.error()的代码,这样一个方法本来的业务逻辑只有5行,有了这些,代码就变成了10行或者更多行,如:public ResultDTO<UserDTO> queryUserByCa
Spring笔记——AOP(注解方式)
在Java EE应用中,常常通过AOP来处理一些具有横切性质的系统级服务,如事务管理、安全检查、缓存、对象池管理等。1.AOP的基本概念AOP从程序运行角度考虑程序的流程,提取业务处理过程的切面。AOP面向的是程序运行中各个步骤,希望以更好的方式来组合业务处理的步骤。 AOP框架并不与特定的代码耦合,AOP框架能处理程序中特定切入点(Pointcut),而不与具体某个具体类耦合。AOP框架具有如下
Spring AOP(五)之Around增强处理
@Around注解用于修饰Around增强处理,Around增强处理是功能比较强大的增强处理,它近似于Before增强处理和AfterReturing增强处理的总结,Around增强处理既可在执行目标方法之前增强动作,也可在执行目标方法之后织入增强的执行。与Before增强处理、AfterReturning增强处理不同的是,Around增强处理可以决定目标方法在什么时候执行,如何执行,甚至可以完全
Spring Boot Web应用的异常处理
Web应用在处理请求时可能会出现多种错误,如请求参数不正确、URL不存在、请求方法错误、内部未知错误等。SpringMVC有多种异常处理方式,使用某种方式的判断标准是,你的异常是在请求处理的哪个阶段发生的。在执行@RequestMapping方法时发现的异常这也是最常见的异常了,处理业务逻辑时可能会发生各种问题,如数据库报错、请求参数格式错误/缺失/值非法等。此类异常的捕获方法有两种,对于提供RES
在spring mvc项目中,使用@Aspect截取所有contoller中的exception,并且通过HttpServletResponse输出的一些问题
需求业务场景:在spring 4.3 的mvc项目中,需要把所有controller层中的exception全部捕获,把错误信息进行处理后,通过HttpServletResponse 输出到浏览器出现的问题:2个项目都需要完成这个场景,但是一个项目实现了。另外一个项目通过同样的配置,却无法实现。表现在aop虽然截获了所有的controller中的exception,通过aop中的@autowired
spring boot中的自定义异常和异常处理器
默认情况下,Spring Boot提供了一个/error的控制器以合理方式处理所有错误的映射,客户端访问出错返回一个json,浏览器访问会返回一个HTML。然而很多时候,无论是客户端还是web端都需要服务器返回一个json,用于前端解析并以自己的方式展示给用户看。这时候就要自定义异常处理器。同时你也可以自定义你的异常类。 本文只分享怎么给自定义异常写处理器,如果你想给已有的异常写处理你可以看ht
SpringBoot找不到Filter类异常
今天兴趣重重准备搭建一个SpringCloud试试,结果启动SpringBoot时,第一步就遇到了错误, pom文件内也引入了Tomcat 但是,就是不可以运行,缺少Filter,也就是缺少依赖包. 后,将项目中增加Tomcat下Lib包导入项目,就完美解决了问题
Exception不能捕捉到所有的异常
一 概念 众所周知Java提供了丰富的异常类,这些异常类之间有严格的集成关系,分类为 父类Throwable Throwable的两个子类Error和Exception Exception的两个子类CheckedException和RuntimeException   二 发现问题 通常捕获异常catch的时候最大catch到Exception这个类就为止
java异常处理中捕获多个异常时为什么习惯于将Exception的子类放在前面而父类放在后面?
首先,你说的这个情况叫“异常屏蔽”现象。假设有两种异常:BaseException和DerivedException。Java里每种异常都是一个类。假设前者是基类,后者是前者的派生类。就像这样,BaseException extends Exception {} DerivedException extends BaseException {}这时候如果我先尝试捕获BaseException,那所...
springBoot 全局异常捕捉(里面包含个各种常见异常)
import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.http.HttpStatus;import org.springframework.http.converter.HttpMessageNotReadableException;import org.springframework.v...
基于@Aspectj使用Spring aop @Around进行权限拦截
1 首先这是切面类,实现对所有action方法进行拦截 @Aspect @Component public class PrivilegeInterceptor {  @Pointcut("execution(java.lang.String com.my.web.action..*.*(..))")  private void actionMethod() {  }  @A
Spring Controller 全局捕获异常
package controllerexception; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; @ControllerAdvice public class Contro...
在spring boot中如何自定义Exception异常
载着干货的老司机 下图示例: 在service的方法中进行判断年龄,参数一:message,super关键字,调用父类的message,参数二:code,均为自定义,具体方法如下: @ControllerAdvice:在于捕获controller中出现的异常 @ExceptionHandler:指定使用的异常类 @ResponseBody:返回相应的数据 完成上述工作你会神...
java异常中Exception捕获不到的异常
一 概念 众所周知java提供了丰富的异常类,这些异常类之间有严格的集成关系,分类为 父类Throwable Throwable的两个子类Error和Exception Exception的两个子类CheckedException和RuntimeException   二 发现问题 通常捕获异常catch的时候最大catch到Exception这个类就为止了,当然这能够处理大部分的异
@ControllerAdvice+@ExceptionHandler全局异常捕获,并格式化给前端
我现在做的是web项目,当后台发生错误的时候,为了方便前端能够查看到错误,需要使用try{}catch{}方法,但是这样写太麻烦了,我们可以使用@ControllerAdvice+@ExceptionHandler进行全局异常的定义,例如: /** * 业务处理异常 */ public class BusinessHandlingException extends RuntimeExcep...
(36)RuntimeException和创建自定义的RuntimeException子异常类和一些例子
一、Exception中有一个特殊的子类异常Runtime运行时异常。 ①如果在函数内部抛出该异常,函数上可以不用声明,编译一样通过。 ②如果在函数上声明了该异常,调用者可以不用进行处理,编译一样通过。 之所以不用再函数上声明,是因为不需要让调用者处理。 当该异常发生,希望程序停止,因为在运行时,出现了无法继续运算的情况,希望停止程序后,对代码修正 ①举个栗子 函数定义的没有问题,
关于spring下自定义异常处理的功能
问题:本周在把现有项目整合shiro,问题是前端使用的是angularjs,如果对于单个的Controller,失败后可以直接在代码块中做try-catch来捕获异常,进而返回给页面或者是ajax的请求,来说明是不成功的。但是现在遇到一个问题是现有的模块以及功能已经有很多了,想要一个个加上try-catch,比较麻烦,于是思考是否有一个全局处理异常的操作。进过查找发现有一个org.springfr
Spring MVC 中的异常捕获
代码内可以通过try/catch捕获已知异常(checked exception),但未知异常(unchecked exception)却不同时机以不同形式随机出现。异常抛出时系统需要特殊处理捕获异常友好提示,而不是把服务器端异常信息发动到客户端。并且记录异常发生的各项指标信息以方便开发人员调试代码。 可以通过以下方式实现共通的全局处理: [list][*]ServletRequestLi...
spring @ControllerAdvice处理异常无法正确匹配自定义异常问题
首先说结论,使用@ControllerAdvice配合@ExceptionHandler处理全局controller的异常时,如果想要正确匹配自己的自定义异常,需要在controller的方法上抛出相应的自定义异常,或者自定义异常继承RuntimeException类。 问题描述: 1、在使用@ControllerAdvice配合@ExceptionHandler处理全局异常时,自定义了一个A...
解决Spring AOP 事务 配置 失效原因--业务类里抛出的异常不满足事务拦截器里定义的异常
采用AOP配置声明式事务有5种方式,下面只说关于采用TransactionInterceptor事务拦截器的方式,配置程序如下: transactionManager: Xml代码 AOP 事务 配置 失效原因(一)" style="margin:0px; padding:0px; border:0px; list-style:none"> bean id="dataSour
springMvc 自定义注解以及自定义异常处理
上一篇写到自定义错误处理,那么有这么个需求,如果每个模块需要错误处理页面不同,那么上面一篇写死为error.jsp就不合理了,所以就需要我们想跳哪个错误页面就哪个页面,这样就灵活多了,我采用自定义注解的方式了指定我们需求跳转的错误页面; 具体操作如下: 1)编写自定义注解类: package com.cwh.springmvc.Annotation; import java.lang.an
springboot异常处理解析
在之前的springmvc中,详细的研究了异常处理的源码以及不同异常处理方式的优先级。那么SpringBoot呢,同样有异常的处理通用方式,下面根据SpringMvc的类似方式入手,尝试不同的异常处理方式。 本章概要 1、模拟springmvc实现异常处理; 2、springboot更丰富的异常处理; 3、简单的源码分析;
SQLException捕获不到的问题
问题描述:做统一异常处理封装类处理,结果发现一直处理不了SQLException及其子类异常 @ResponseBody @ExceptionHandler(value=SQLException.class) public ResponseModel sqlErrorHandler(SQLException e){ System.out.println(&quot;sql error handler&quot;...
C++异常(3) - 捕获基类与子类的异常
如果基类和子类都被做为异常捕获,则子类的catch代码块必须出现在基类之前。 如果把基类放在前面,则子类的catch代码块永远都不会被调用。
Spring 事务异常回滚
  先看如下代码     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = { AppBizExeA.class } , noRollbackFor = { AppBizExeB.class }) public void method1() throws Exception { System.out....
SpringBoot实战 之 异常处理篇
在互联网时代,我们所开发的应用大多是直面用户的,程序中的任何一点小疏忽都可能导致用户的流失,而程序出现异常往往又是不可避免的,那该如何减少程序异常对用户体验的影响呢?其实方法很简单,对异常进行捕获,然后给予相应的处理即可。但实现的方式却有好多种,例如:try { ... } catch (Exception e) { doSomeThing(); }像这种标准的 try-catch
异常中error和exception有什么区别?
error类对象由java虚拟机生成并抛出,如系统崩溃,内存溢出,对这类错误导致的应用程序中断,仅靠程序本身是无法恢复和预防的 exception类表示程序可以处理的异常,可以捕获,且能恢复
【SpringMVC学习07】SpringMVC中的统一异常处理
我们知道,系统中异常包括两类:编译时异常和运行时异常RuntimeException,前者通过捕获异常从而获取异常信息,后者主要通过规范代码开发、测试通过手段减少运行时异常的发生。在开发中,不管是dao层、service层还是controller层,都有可能抛出异常,在springmvc中,能将所有类型的异常处理从各处理过程解耦出来,既保证了相关处理过程的功能较单一,也实现了异常信息的统一处理和维
springboot-统一返回数据,自定义异常,异常处理
springboot-统一返回数据,统一异常处理,自定义异常 环境 idea2018,jdk1.8, springboot版本:1.5.9.RELEASE 1.java异常 Java 提供了两类主要的异常 :runtime exception(预期异常和运行时异常) 和 checked exception (预期异常) 出现运行时异常后,系统会把异常一直往上层抛,一直遇到处理代码。如果没有处...
Spring Boot : 全局异常捕捉(三)
在写 Spring Boot : 自动JSON转换和热部署(二) 时本来想把全局异常捕捉加上的,但是不知道为什么测试一直没成功.今天又看了下全局异常捕捉@ControllerAdvice 和 @ExceptionHandler 两个标签. 参考 : Spring3.2新注解@ControllerAdvice , 在spring扫描bean的时候一定要把全局异常捕捉类扫描进来,否则是不成功的.下面是反
Java执行时发生异常,但是无法跳到Catch异常区块,异常类型InputMismatchException
问题:Java执行时发生异常,但是无法跳到Catch异常区块,异常类型InputMismatchException。问题描述:package Demo3;import java.util.InputMismatchException;import java.util.Scanner;public class Pri {public static void main(String[] args) {...
dubbo 异常处理以及自定义异常
dubbo 抛出异常分析 在进行dubbo调用时,会抛出哪些异常? 为什么有时候是RpcException,有时候又是用户抛出的异常 dubbox2.8.4 中com.alibaba.dubbo.rpc.filter.ExceptionFilter 的注释得知: 1. 如果是checked异常,直接抛出 ! (exception instanceof RuntimeException) &amp;...
Spring 之AOP AspectJ切入点语法详解(最全面、最详细。)
6.5  AspectJ切入点语法详解 6.5.1  Spring AOP支持的AspectJ切入点指示符        切入点指示符用来指示切入点表达式目的,,在Spring AOP中目前只有执行方法这一个连接点,Spring AOP支持的AspectJ切入点指示符如下:          execution:用于匹配方法执行的连接点;          within
runnable的线程抛出异常无法捕获
package com.itbuluoge.mythread; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; class MyThread implements Runnable { public void run() { throw new RuntimeExce
java捕获线程异常
在jdk1.5之前,线程不允许抛出异常(各个线程要把自己的checked exception处理掉),但是无法避免的是uncheckedexception,也就是RuntimeException,当抛出异常时子线程会结束,但不会影响主线程。主线程通过try catch是无法捕获子线程异常的,Thread对象提供了setUncaughtExceptionHandler(Thread.Unca
java异常-父类异常与子类异常之间的捕获关系
class Annoyance extends Exception {} class Sneeze extends Annoyance {} class Human { public static void main(String[] args) throws Exception { try {
Java异常分类(一)
Java 中的异常简介 程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常。 Java提供了更加优秀的解决办法:异常处理机制。 Throwable类是Java异常类型的顶层父类,一个对象只有是 Throwable 类的(直接或者间接)实例,他才是一个异常对象,才能被异常处理机制识别。JDK中内建了一些常用的异常类,我们也可以自定义异常。 Java异常的分类 ...
php的Error与Exception捕获问题
最近在项目中前端的php同事发现后台有个php导出的脚本,没有完成就挂掉了,使用try..catch..方式并没有捕获到异常。代码是这样写的try { $res = $this->doExprot(); } catch (\Exception $e) { $msg = '导出程序异常,被杀死 ******* 错误信息:' . $e->getMessage() . ' ********
java不能捕获的异常
一 概念 众所周知Java提供了丰富的异常类,这些异常类之间有严格的集成关系,分类为 父类Throwable Throwable的两个子类Error和Exception Exception的两个子类CheckedException和RuntimeException   二 发现问题 通常捕获异常catch的时候最大catch到Exception这个类就为止
JavaEE开发之SpringMVC中的自定义拦截器及异常处理
一、自定义拦截器 顾名思义,拦截器是负责拦截某些东西的工具。本部分我们创建的拦截器是负责拦截请求的。这个拦截器类似于高速收费站,只要是想上高速的,都得经过我这个拦截器才可以。也就是说,接下来我们所创建的拦截器就类似于收费站的作用、所有的用户请求都会经过我们这个拦截器。废话少说,接下来我们就来创建一个拦截器,并部署到我们的Spring中。   1、自定义拦截器的创建 接下来我
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 java类中班级的字段 java中怎么命名班级类