gpt4 book ai didi

exception-handling - 你能从原始 AspectJ 抛出异常吗?

转载 作者:行者123 更新时间:2023-12-04 21:18:32 25 4
gpt4 key购买 nike

我正在使用aspectJ 编写一个非spring aop 方面,我正在为它编写一个before 建议。

在我之前的建议中,假设我想打开一个文件。所以我这样执行它:

 public before(): mypointcut() {
File file = new File("myfile");
file.getCanonicalPath();
}

但是 IntelliJ 提示 IOException 是一个未处理的异常。我如何编写 before 建议,以便它可以捕获并重新抛出异常或允许未处理的异常?

最佳答案

为了将异常传递到调用堆栈,您必须像普通方法调用一样在建议中添加 throws 声明:

public before() throws IOException: mypointcut() {...}

此建议只能应用于声明自己抛出此异常(或异常的父级)的方法。

为了重新抛出它,您需要捕获异常并将其重新抛出到 RuntimeException 的实例中,如下所示:
public before(): mypointcut() {
File file = new File("myfile");
try {
file.getCanonicalPath();
} catch (IOException ex) {
throw new RuntimeException(e);
}
}

如果这是一个好主意,那就是另一个故事了......

关于exception-handling - 你能从原始 AspectJ 抛出异常吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17119146/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com