AOP 捕獲自定義異常
阿新 • • 發佈:2018-11-14
package com.gqc.aop05; import org.springframework.aop.ThrowsAdvice; //異常通知 public class MyThrowsAdvice implements ThrowsAdvice { // 當目標方法丟擲UsernameException異常時,執行當前方法 public void afterThrowing(UserNameExcepiton ex) { System.out.println("發生使用者名稱異常 ex = " + ex.getMessage()); } // 當目標方法丟擲PasswordException異常時,執行當前方法 public void afterThrowing(PasswordException ex) { System.out.println("發生密碼異常 ex = " + ex.getMessage()); } // 當目標方法丟擲其它異常時,執行當前方法 public void afterThrowing(Exception ex) { System.out.println("發生異常 ex = " + ex.getMessage()); } }
package com.gqc.aop05; import com.gqc.utils.SystemService; //目標類 public class SomeServiceImpl implements ISomeService { @Override public boolean login(String username, String password) throws UserException { if(!("beijing".equals(username))){ throw new UserNameExcepiton("使用者名稱輸錯了"); } if(!"111".equals(password)){ throw new PasswordException("密碼輸錯了"); } return true; } }
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- 註冊目標物件 --> <bean id="someService" class="com.gqc.aop05.SomeServiceImpl"/> <!-- 註冊切面:後置通知 --> <bean id="myAdvice" class="com.gqc.aop05.MyThrowsAdvice"/> <!-- 生成代理物件 --> <bean id="serviceProxy" class="org.springframework.aop.framework.ProxyFactoryBean"> <!-- 指定目標物件 --> <property name="target" ref="someService"/> <!-- <property name="targetName" value="someService"/> --> <!-- 指定切面 --> <property name="interceptorNames" value="myAdvice"/> </bean> </beans>
package com.gqc.aop05;
//異常分兩種
//1)執行時異常 不進行處理也可以編譯通過
//若一個類繼承RunntimeException 則該異常就是執行時異常
//1)編譯時異常(受查異常 Checked Exception) 不進行處理將無法通過編譯
//若一個類繼承Exception 則該異常就是受查異常
public class UserException extends Exception {
public UserException() {
super();
// TODO Auto-generated constructor stub
}
public UserException(String message) {
super(message);
// TODO Auto-generated constructor stub
}
}