12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
-
- package language;
-
- public class Context {
- public static void main(String[] argList) {
- new C().run();
- }
- }
-
- class C {
- static int MAX = 2;
- int i;
- C() {
- i = 1;
- }
- public void run() {
- try {
- more();
- } catch (MoreError e) {
- // log but continue
- System.out.println(e.getMessage());
- }
- }
-
- private void more() {
- i++;
- if (i >= MAX) {
- i = 0;
- throw new MoreError();
- }
- }
- static class MoreError extends Error {
- MoreError() {
- super("was too much!");
- }
- }
- }
-
- /** @author Erik Hilsdale, Wes Isberg */
- aspect A {
-
- // START-SAMPLE language-fieldSetContext Check input and result for a field set.
- /**
- * Check input and result for a field set.
- */
- void around(int input, C targ) : set(int C.i)
- && args(input) && target(targ) {
- String m = "setting C.i=" + targ.i + " to " + input;
- System.out.println(m);
- proceed(input, targ);
- if (targ.i != input) {
- throw new Error("expected " + input);
- }
- }
- // END-SAMPLE language-fieldSetContext
-
- // START-SAMPLE language-handlerContext Log exception being handled
- /**
- * Log exception being handled
- */
- before (C.MoreError e) : handler(C.MoreError)
- && args(e) && within(C) {
- System.out.println("handling " + e);
- }
- // END-SAMPLE language-handlerContext
-
- // See Initialization.java for constructor call,
- // constructor execution, and {pre}-initialization
-
- }
|