Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
RE: [aspectj-users] Excluding Particular Joinpoints


From: aspectj-users-bounces@xxxxxxxxxxx [mailto:aspectj-users-bounces@xxxxxxxxxxx] On Behalf Of Tobias Dunn-Krahn

 

I am using AspectJ in a project to log all handled exceptions.  In general this is what I want, but in a small number of cases such exceptions are “expected” and I do not wish to log them. 

 
aspect FooBarExceptionLoggingStrategy {
 
  before(Throwable t): handler(Throwable) && args(t) {
    if( shouldLog(t) )
       log(t);
  }
 
  private boolean shouldLog(Throwable t) {
    <<test whatever needs testing here>>
  }
 
  private void log(Throwable t) {
    ...
  }
}
 
The point being that you can test the exception in any way you want before logging it.
You could also pass thisJoinPoint or thisJoinPointStaticPart. If you want, you could
move shouldLog into the actual pointcut, using if(shouldLog(t)).

 

 


From: aspectj-users-bounces@xxxxxxxxxxx [mailto:aspectj-users-bounces@xxxxxxxxxxx] On Behalf Of Tobias Dunn-Krahn
Sent: Wednesday, November 30, 2005 11:42 AM
To: aspectj-users@xxxxxxxxxxx
Subject: [aspectj-users] Excluding Particular Joinpoints

Hello All,

 

I am using AspectJ in a project to log all handled exceptions.  In general this is what I want, but in a small number of cases such exceptions are “expected” and I do not wish to log them.  My pointcut definition is currently very simple; it matches all exception handlers except those that handle SocketTimeoutExceptions:

 

  pointcut exceptionHandlers(Throwable t) : handler(Throwable+) && (args(t)

      && !args(java.net.SocketTimeoutException));

 

However, now I need to exclude matching of particular exception handlers that are not distinguishable by type.  I tried creating a custom annotation with target type LOCAL_VARIABLE and using this annotation to decorate the exception, but unfortunately annotations of this type are not retained for runtime (and are therefore inaccessible).  Does anyone have any suggestions?

 

Thanks in advance,

Tobias

 


Back to the top