12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- 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");
- }
- }
|