微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

方面异常处理程序

如何解决方面异常处理程序

我有一个 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 举报,一经查实,本站将立刻删除。