异常处理 – 您可以在建议之前从Raw AspectJ抛出异常

我正在使用aspectJ写一个非弹簧aop方面,我正在写一个之前的建议.

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

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

但IntelliJ抱怨IOException是一个未处理的异常.如何编写之前的建议,以便它可以捕获并重新抛出异常或允许未处理的异常?

最佳答案
为了将异常交给调用堆栈,您必须向您的建议添加一个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);
    }
}

如果这是一个好主意是另一个故事……

转载注明原文:异常处理 – 您可以在建议之前从Raw AspectJ抛出异常 - 代码日志