我研究了下AOP对 异常的统一处理,这个东西太好用了,可把系统异常颗粒度划分细,
先来个接口
public interface TestBean
{
void test1()throws ClassNotFoundException;
int test2(int a,int b);
}
实现类:
public class TestBeanImpl implements TestBean
{
public void test1()throws ClassNotFoundException
{
Class.forName("Peson");
}
public int test2(int a, int b)
{
return a / b;
}
}
接下来是重点:Excption 集中处理点
public class MyExceptionAdvice implements ThrowsAdvice
{
//在这里你可以定义你自己需要处理的Exception方法,比如我这里就做了对
//ClassNotFoundException ,Exception 也就是说这个类只关心这两个异常
public void afterThrowing(ClassNotFoundException ex) throws Throwable
{
System.out.println("系统抛出ClassNotFoundException异常,异常提示为: " + ex.getMessage());
}
public void afterThrowing(Method m, Object[] args, Object target, Exception ex)
{
System.out.println("系统抛出Exception异常,异常提示为: " + ex.getMessage());
System.out.println("抛出异常的方法为: " + m);
System.out.println("抛出异常的方法的参数为: " + args);
System.out.println("抛出异常的目标对象为: " + target);
}
}
好了,接下来是配置文件
<?xml version="1.0" encoding="gb2312"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="testTarget" class="com.spring.lee6.throwsa.TestBeanImpl"/>
<bean id="myExceptionAdvice" class="com.spring.lee6.throwsa.MyExceptionAdvice"/>
<bean id="test" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="proxyInterfaces">
<value>com.spring.lee6.throwsa.TestBean</value>
</property>
<property name="target">
<ref local="testTarget"/>
</property>
<property name="interceptorNames">
<list>
<value>myExceptionAdvice</value>
</list>
</property>
</bean>
</beans>
管理处理类,呵呵,很受用