12345678910111213141516171819202122232425262728293031323334353637383940 |
-
- import org.aspectj.testing.Tester;
-
- // PR#114, PR#115
-
- public class OrderOfCatches {
- public static void main(String[] args) { test(); }
- public static void test() {
- A a = new A();
- try {
- a.bar();
- Tester.check( true, "" );
- }
- catch ( FooException fe ) {
- }
- Tester.checkEqual(a.s, "a-FooException-EXC:FooException", "");
- }
- }
-
- class A {
- public String s = "a";
- void bar() throws FooException {
- foo();
- }
- void foo() throws FooException {
- throw new FooException();
- }
- }
-
- aspect AA {
- pointcut m(A a): target(a) && call(void bar());
- after (A a) throwing (FooException e): m(a) {
- a.s += "-" + e.getClass().getName();
- }
- after (A a) throwing (Exception e): m(a) {
- a.s += "-" + "EXC:"+e.getClass().getName();
- }
- }
-
- class FooException extends Exception {}
|