mirror of
https://github.com/eclipse-aspectj/aspectj.git
synced 2024-08-14 02:10:40 +02:00
98 lines
2.3 KiB
Java
98 lines
2.3 KiB
Java
import org.aspectj.testing.Tester;
|
|
import java.io.IOException;
|
|
|
|
public class AdviceThrowsCp {
|
|
public static void main(String[] args) {
|
|
try {
|
|
new C().m1();
|
|
Tester.checkFailed("m1");
|
|
} catch (CheckedExc ce) {
|
|
Tester.checkEqual("b1", ce.getMessage(), "m1");
|
|
}
|
|
try {
|
|
new C().m2();
|
|
Tester.checkFailed("m2");
|
|
} catch (UncheckedExc ce) {
|
|
Tester.checkEqual("b3", ce.getMessage(), "m2");
|
|
}
|
|
try {
|
|
new C().m3();
|
|
Tester.checkFailed("m3");
|
|
} catch (CheckedExc ce) {
|
|
Tester.checkEqual("b1", ce.getMessage(), "m3");
|
|
} catch (Exception e) {
|
|
Tester.checkFailed("IOException");
|
|
System.out.println("m3: " + e);
|
|
}
|
|
try {
|
|
new C().m4();
|
|
Tester.checkFailed("m4");
|
|
} catch (UncheckedExc ce) {
|
|
Tester.checkEqual("b3", ce.getMessage(), "m4");
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
|
|
class CheckedExc extends Exception {
|
|
CheckedExc(String m) { super(m); }
|
|
}
|
|
|
|
class UncheckedExc extends RuntimeException {
|
|
UncheckedExc(String m) { super(m); }
|
|
}
|
|
|
|
|
|
class C {
|
|
public void m1() throws CheckedExc {
|
|
}
|
|
|
|
public void m2() throws UncheckedExc {
|
|
}
|
|
|
|
public void m3() throws IOException, CheckedExc {
|
|
}
|
|
|
|
public void m4() {
|
|
}
|
|
}
|
|
|
|
aspect A {
|
|
pointcut canThrowChecked(): call(* C.m1()) || call(* C.m3());
|
|
pointcut canThrowChecked1(): call(* C.m*() throws CheckedExc);
|
|
|
|
pointcut canThrowUnchecked(): call(* C.m*());
|
|
|
|
|
|
before() throws CheckedExc: canThrowChecked() {
|
|
throw new CheckedExc("b1");
|
|
}
|
|
before() throws CheckedExc: canThrowChecked1() {
|
|
throw new CheckedExc("b2");
|
|
}
|
|
|
|
before() throws UncheckedExc: canThrowUnchecked() {
|
|
throw new UncheckedExc("b3");
|
|
}
|
|
|
|
before(): canThrowUnchecked() {
|
|
throw new UncheckedExc("b4");
|
|
}
|
|
|
|
void around() throws CheckedExc: canThrowChecked() {
|
|
throw new CheckedExc("a1");
|
|
}
|
|
void around() throws CheckedExc: canThrowChecked1() {
|
|
throw new CheckedExc("a2");
|
|
}
|
|
|
|
void around() throws UncheckedExc: canThrowUnchecked() {
|
|
throw new UncheckedExc("a3");
|
|
}
|
|
|
|
void around(): canThrowUnchecked() {
|
|
throw new UncheckedExc("a4");
|
|
}
|
|
}
|