|
|
@@ -0,0 +1,32 @@ |
|
|
|
|
|
|
|
import org.aspectj.lang.*; |
|
|
|
|
|
|
|
public class GetCauseOnSoftException { |
|
|
|
|
|
|
|
public static void a(){ |
|
|
|
b(); |
|
|
|
} |
|
|
|
/** |
|
|
|
* Method b. |
|
|
|
*/ |
|
|
|
private static void b() { |
|
|
|
throw new MyException("secret"); |
|
|
|
} |
|
|
|
|
|
|
|
public static void main(String[] args) { |
|
|
|
try { |
|
|
|
a(); |
|
|
|
} catch (SoftException e) { |
|
|
|
System.out.println(e.getCause()); |
|
|
|
if (e.getCause().getMessage().indexOf("secret")==-1) |
|
|
|
throw new RuntimeException("Didn't get expected cause of SoftException"); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
aspect Softner { |
|
|
|
declare soft : MyException : within(GetCauseOnSoftException); |
|
|
|
} |
|
|
|
|
|
|
|
class MyException extends Exception { |
|
|
|
MyException(String s) { super(s);} |
|
|
|
} |