As Ross says, the developers notebook is still the best place to find that
info.  Here is a demo program:
import org.aspectj.lang.annotation.*;
import org.aspectj.lang.*;

@Aspect
class TrackExceptions {

  // Detect after throwing advice to catch methods that throw exceptions:
        @Pointcut("execution(* *(..))  && within(Demo)")
        void interestingMethods() {}

        @AfterThrowing(pointcut = "interestingMethods()", throwing = "t")
        public void logException(JoinPoint thisJoinPoint, Throwable t) {
  System.err.println("Exception thrown at
"+thisJoinPoint.getSourceLocation()+".  Exception was "+t);
        }

  //
        @Before("handler(Throwable+) && args(t) && within(Demo)")
        public void watchHandler(JoinPoint thisJoinPoint, Throwable t) {
  System.err.println("Entered exception handler at
"+thisJoinPoint.getSourceLocation()+".  Exception was "+t);
        }

}
public class Demo {
  public static void main(String[]argv) {
    System.err.println("Calling method with handler");
    new Demo().run2();

    System.err.println("Calling method that throws exception");
    new Demo().run();
  }

  public void run() {
    throw new RuntimeException();
  }

  public void run2() {
    try {
      throw new RuntimeException();
    } catch (RuntimeException re) {
    }
  }
}

Andy.


2008/8/28 Ross Cohen <[EMAIL PROTECTED]>

> It's true that the online documentation is not terribly organized, and that
> examples of many common cases are missing.    But the information
> *is* there -- you just have to dig for it.    A lot of what you're looking
> for will be in the developers notebook (which has most of the annotation
> style
> documentation):
> http://www.eclipse.org/aspectj/doc/released/adk15notebook/index.html
>
> Ross
>
>
> CheapLisa wrote:
>
>  My IDE only supports annotation style with AspectJ and I am in need of
>> examples for annotation style.  I bought a book (no examples with
>> annotation
>> style) and have read a lot of documentation but can not get this one
>> simple
>> thing to work.
>>
>> 1) Example of an aspect that runs after any Throwable and logs the
>> exception
>> (cause, message) + stack trace (any throwable anywhere Runtime exception
>> or
>> checked exception.
>>
>> 2) Example same as the above (run after any Throwable) but limited to any
>> Throwable in a specific package like "com.mycompany.*"
>>
>> I found examples that are non-annotation style, tried to translate them to
>> annotation style but they did not work.  This is such a common thing I
>> believe someone will have an example they can attach, email or paste into
>> this response.
>>
>> I recently inherited a big blob of code and believe there are all sorts of
>> things going on under the hood that I can't see.  This would help me log
>> any
>> exception anywhere and see what may be going awry.
>>
>> I believe if I had examples of the @Pointcut and @After I could fill in
>> the
>> body of the method to do what I need.  I'm just not sure how to catch
>> every
>> throwable and then write another one that will catch every throwable given
>> a
>> package name.
>>
>> thanks!!!
>>
>>
>> Lisa
>>
>>
> _______________________________________________
> aspectj-users mailing list
> [email protected]
> https://dev.eclipse.org/mailman/listinfo/aspectj-users
>
_______________________________________________
aspectj-users mailing list
[email protected]
https://dev.eclipse.org/mailman/listinfo/aspectj-users

Reply via email to