5

私は、aspectJ を使用して非Spring aop アスペクトを作成しており、そのためのビフォア アドバイスを作成しています。

以前のアドバイスとして、ファイルを開きたいとしましょう。だから私はそれを次のように実行します:

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

しかし、IntelliJ は IOException が未処理の例外であることに不満を持っています。例外をキャッチして再スローするか、未処理の例外を許可するように、前のアドバイスを作成するにはどうすればよいですか?

4

1 に答える 1

2

コール スタックに例外を渡すには、通常のメソッド呼び出しと同様に、アドバイスに 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);
    }
}

これが良いアイデアかどうかは別の話です...

于 2013-06-15T17:30:43.993 に答える