如何解决方面异常处理程序
我有一个 AOP 检查的异常处理程序。这个想法是使用 Aspects 去除所有重复的代码。
@Aspect
public class DbAspect {
@pointcut("execution(public * *(..)) && @annotation(Transactional)")
public void transactionalMethods() {/* Empty */}
@Around("transactionalMethods()")
public Object procede(ProceedingJoinPoint call) throws Throwable {
try(Connection connection = DBConnectionPool.INSTANCE.getConnection()) {
JDBCUtils.setCurrentConnection(connection);
return call.proceed();
} catch (Exception e) {
throw new RuntimeException("sqlException happend");
} finally {
JDBCUtils.removeCurrentConnection();
}
}
}
可能抛出检查异常的代码
@Override
@Transactional(read = true)
public Optional<User> select(sqlSpecification specification) {
return JDBCUtils.select(JDBCUtils.getConnection(),specification.getsql(sql_SELECT_USER),userResultSetHandler,specification.getParameters());
}
问题是我得到编译时错误 Unhandled exception type sqlException
,即使我有处理所有异常的代码。
我使用 Maven pom.xml
来构建项目。
<properties>
<maven.compiler.target>11</maven.compiler.target>
<maven.compiler.source>11</maven.compiler.source>
<junit.version>5.7.0</junit.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.source-target.version>11</java.source-target.version>
<aspectj.version>1.9.4</aspectj.version>
</properties>
<dependencies>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>${aspectj.version}</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>${aspectj.version}</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjtools</artifactId>
<version>1.9.6</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.3.0</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>11</source>
<target>11</target>
<useIncrementalCompilation>false</useIncrementalCompilation>
</configuration>
</plugin>
<plugin>
<groupId>com.nickwongdev</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.12.1</version>
<configuration>
<showweaveInfo>true</showweaveInfo>
<source>${java.source-target.version}</source>
<target>${java.source-target.version}</target>
<Xlint>ignore</Xlint>
<complianceLevel>${java.source-target.version}</complianceLevel>
<encoding>${project.build.sourceEncoding}</encoding>
<XnoInline>true</XnoInline>
</configuration>
<executions>
<execution>
<phase>process-sources</phase>
<goals>
<goal>compile</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjtools</artifactId>
<version>${aspectj.version}</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>${aspectj.version}</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
我已经看到了一些解决方案,但它们对我不起作用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。