--- /dev/null
+public aspect DeclareSoftRuntimeException {
+
+ declare soft : MyRuntimeException : execution(* *(..));
+ declare soft : MyException : execution(* *(..));
+ declare soft : Exception : execution(void throwMyExceptionButNotReally());
+
+ public static void main(String[] args) {
+ try {
+ throwMyRuntimeException();
+ } catch(Exception ex) {
+ System.out.println(ex.getClass().getName());
+ }
+ try {
+ throwMyException();
+ } catch(Exception ex) {
+ System.out.println(ex.getClass().getName());
+ }
+ try {
+ throwMyExceptionButNotReally();
+ } catch(Exception ex) {
+ System.out.println(ex.getClass().getName());
+ }
+ }
+
+ private static void throwMyRuntimeException() {
+ throw new MyRuntimeException();
+ }
+
+ private static void throwMyException() throws MyException {
+ throw new MyException();
+ }
+
+ private static void throwMyExceptionButNotReally() throws MyException {
+ throw new MyRuntimeException();
+ }
+
+}
+
+class MyRuntimeException extends RuntimeException {}
+
+class MyException extends Exception {}
--- /dev/null
+import java.io.IOException;
+import org.aspectj.lang.SoftException;
+
+public class VerifyError {
+
+ static void foo() throws IOException {
+ throw new IOException();
+ }
+
+ public static void main(String[] args) throws Exception{
+ try {
+ foo();
+ } catch (SoftException sEx) {
+ //
+ }
+ }
+}
+
+
+aspect Soften {
+
+ declare soft : IOException : call(* foo());
+}
\ No newline at end of file
public void test051_arrayCloningInJava5() {
runTest("AJC possible bug with static nested classes");
}
-
+
public void testBadASMforEnums() throws IOException {
runTest("bad asm for enums");
public void npeOnTypeNotFound() {
runTest("structure model npe on type not found");
}
+
+ public void testNoRuntimeExceptionSoftening() {
+ runTest("declare soft of runtime exception");
+ }
+
+ public void testRuntimeNoSoftenWithHandler() {
+ runTest("declare soft w. catch block");
+ }
// helper methods.....
<run class="B"/>
</ajc-test>
+ <ajc-test dir="decs" pr="42743" title="declare soft of runtime exception">
+ <compile files="DeclareSoftRuntimeException.aj">
+ <message kind="warning" line="3" text="MyRuntimeException will not be softened as it is already a RuntimeException"/>
+ </compile>
+ <run class="DeclareSoftRuntimeException">
+ <stdout>
+ <line text="MyRuntimeException"/>
+ <line text="org.aspectj.lang.SoftException"/>
+ <line text="MyRuntimeException"/>
+ </stdout>
+ </run>
+ </ajc-test>
+
+ <ajc-test dir="decs" pr="42743" title="declare soft w. catch block">
+ <compile files="VerifyError.aj">
+ </compile>
+ <run class="VerifyError"/>
+ </ajc-test>
+
<ajc-test dir="bugs" pr="61568" title="Various kinds of ambiguous bindings">
<compile files="AmbiguousBindings.aj">
<message line="17" text="ambiguous binding of parameter(s) foo across '||' in pointcut"></message>