4

私には次の側面があります。

aspect NullifyNoResultException {

    Object around(..) : execution(public Object com.example.*.*(..) {
        try { return proceed();    
            } catch (NoResultException e) { 
                return null;
            }                  
        }
    }
}

何らかの理由で、続行するための呼び出しにより、Eclipseでエラーが発生します。

メソッドproceed()は、タイプNullifyNoResultExceptionに対して未定義です。

Mavenをビルドすると->mvn installエラーは発生しません。しかし、私はまだインポートが不足しているので、それは意味がありません。そのNoResultExceptionため、Mavenはそれについて文句を言う必要があります。
代わりに、ビルドするだけで文句はありません。

Eclipseに文句を言わないようにするにはどうすればよいproceed()ですか?
この側面を構築するにはどうすればよいですか?

4

1 に答える 1

2

コード例でいくつかの構文エラーを見つけました。それらを修正すると、次の例は正常に実行されます。ところで、NoResultExceptionJava EE がインストールされていないため、独自に定義しました。

package javax.persistence;

public class NoResultException extends RuntimeException {
    private static final long serialVersionUID = 1L;
}
package com.example.stackoverflow;

import javax.persistence.NoResultException;

public class Application {
    public static void main(String[] args) {
        Application app = new Application();
        System.out.println(app.valueReturningMethod(1, "two"));
        System.out.println(app.exceptionThrowingMethod(1, "two"));
    }

    public Object valueReturningMethod(int i, String string) {
        return "normal result";
    }

    public Object exceptionThrowingMethod(int i, String string) {
        throw new NoResultException();
    }
}
package com.example.stackoverflow;

import javax.persistence.NoResultException;

aspect NullifyNoResultException {
    Object around() : execution(public Object com.example..*(..)) {
        try {
            return proceed();
        } catch (NoResultException e) {
            return null;
        }
    }
}

出力は期待どおりです。

normal result
null
于 2013-03-15T12:16:51.787 に答える