When apply the handy Assert.notNull, we should be aware that it might throw IllegalArgumentException.
@Aspect
@Component
public class ExceptionAspect {
private final Logger log = LoggerFactory.getLogger(getClass());
@AfterThrowing(throwing = "ex", pointcut = "within(com.xxx.broker..*)")
public void catchIllegalArgumentException(Throwable ex) {
log.error("IllegalArgumentException occurs! ", ex);
}
}
Test:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath*:applicationContext.xml")
@ActiveProfiles("test")
public class ExceptionAspectTest {
@Autowired
private IBrokerService brokerService;
@Test
public void testInputNull(){
brokerService.getAllHoldings(null);
}
}
Service
@Override
public Response getAllHoldings(Request request) {
Assert.notNull(request);
Response response = new Response();
...
return response;
}
Application context:
<aop:aspectj-autoproxy />
POM.xml
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>${aspectj.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>${aspectj.version}</version>
</dependency>