1234567891011121314151617181920212223242526272829303132333435363738394041 |
- import org.aspectj.lang.JoinPoint.StaticPart;
-
- import java.lang.annotation.Retention;
- import java.lang.annotation.RetentionPolicy;
-
- //@Retention(RetentionPolicy.RUNTIME)
- @interface NormalException {
- /** The default of Void means ANY throwable */
- Class[] value() default Void.class;
- }
-
- public aspect ErrorHandling {
-
- before(Throwable throwable) : handler(*) && args(throwable) && !@withincode(NormalException) {
- System.err.println("Caught in "+thisEnclosingJoinPointStaticPart.getSignature().getName());
- }
-
- public static void main(String argz[]) {
- new Test().checkConnection();
- }
- }
-
- class Test {
- @NormalException(Exception.class)
- protected void checkConnection() {
- try {
- foo();
- } catch (Exception e) {
- ;//skip warning
- }
- }
-
- private void foo() {
- try {
- throw new RuntimeException();
- } catch (RuntimeException e) {
- throw e;
- }
- }
-
- }
|