public class PR318 { public static void main(String[] args) { new PR318().realMain(args); } public void realMain(String[] args) { Bar.bar(); org.aspectj.testing.Tester.check(caught, "Exception wasn't caught"); } static boolean caught = false; } class Foo { static void foo () throws Exception { throw new IllegalArgumentException("foo!"); } } class Bar { static void bar () { try { Foo.foo(); } catch (Exception e) { } } } aspect A { before (Exception e): handler(Exception) && args(e) { if (e instanceof IllegalArgumentException) { PR318.caught = true; } } }