Declare Soft
Prev Chapter 11. Other Changes in AspectJ 5 Next

Declare Soft

The semantics of the declare soft statement have been refined in AspectJ 5 to only soften exceptions that are not already runtime exceptions. If the exception type specified in a declare soft statement is RuntimeException or a subtype of RuntimeException then a new XLint warning will be issued:

 	 declare soft : SomeRuntimeException : execution(* *(..));
 	 
 	 >> "SomeRuntimeException will not be softened as it is already a RuntimeException" [XLint:runtimeExceptionNotSoftened]
		

This XLint message can be controlled by setting the runtimeExceptionNotSoftened XLint parameter.

If the exception type specified in a declare soft statement is a super type of RuntimeException (such as Exception for example) then any checked exception thrown at a matched join point, where the exception is an instance of the softened exception, will be softened to an org.aspectj.lang.SoftException.

 	public aspect SoftenExample {
 	
 	 declare soft : Exception : execution(* Foo.*(..));
 	
 	}
 	
 	class Foo {
 	
 	 public static void main(String[] args) {
 	 Foo foo = new Foo();
 	 foo.foo(); 
 	 foo.bar();
 	 }
 	
 	 void foo() throws Exception {
 	 throw new Exception(); // this will be converted to a SoftException
 	 }
 	 
 	 void bar() throws Exception {
 	 throw new RuntimeException(); // this will remain a RuntimeException
 	 }
 	
 	}
		

Prev Home Next
Chapter 11. Other Changes in AspectJ 5 Up Chapter 12. Load-Time Weaving

AltStyle によって変換されたページ (->オリジナル) /