Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[aspectj-users] Throwing undeclared checked exceptions (bug or feature?)

Hi,

I found out that it is possible to throw checked exception that is missing in signature of a method.
It is possible only via annotation style aspect declaration. If you try to do same via .aj files you'll get compiler exception.
I wonder is it a bug or a feature?

Here is test case.


/** A class that doesn't declare that it throws any checked exception */
public class Foo {
    public void foo() {
    }
}
/**An aspect that throws Exception each time method Foo is  called */
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;

@Aspect
public class FooAspect {
    @Around("execution(void Foo.foo())")
    public Object throwException(ProceedingJoinPoint pjp) throws Throwable {
        throw new Exception();
    }
}

/**Tests that undeclared check exception was thrown*/
import org.junit.Assert;
import org.junit.Test;

public class TextExceptionHandling {

    @Test
    public void undeclaredCheckedExceotionIsThrown() {
        try {
            new Foo().foo();
            Assert.fail();
        } catch (Exception e) {
            Assert.assertTrue(e.getClass().equals(Exception.class));
        }
    }
}

PS I suppose that it is a bug since JVM suppose to throw UndeclaredThrowableException in this case.

Back to the top