Java方法覆蓋中的異常處理
Java方法覆蓋規則:
● 方法簽名必須相同
● 方法返回值類型, 可以相同 ,子類方法的返回值類型可以是父類方法返回值類型的子類型
● 方法權限可以更寬泛
● 方法的異常不能大于父類方法的異常
自定義異常
package com.wkcto.chapter02.demo03;
//1) 定義一個類繼承Exception
public class AgeOutOfBoundsException extends Exception {
//2) 一般提供兩個 構造方法
public AgeOutOfBoundsException() {
super();
}
//帶有字符串參數的構造方法, 這個字符串是異常信息
public AgeOutOfBoundsException(String message) {
super(message);
}
}
package com.wkcto.chapter02.demo03;
public class Person {
private String name;
private int age;
private String gender;
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + ", gender=" + gender + "]";
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
//4) throw語句所在的方法通過throws 聲明該異常
public void setAge(int age) throws AgeOutOfBoundsException {
//必要時,在setter()方法中,對參數接收的數據進行合理 性驗證
if ( age >= 0 && age <= 130) {
this.age = age;
}else {
//年齡不合理 , 拋出一個異常
//3)在需要的位置,通過throw拋出一個異常對象
throw new AgeOutOfBoundsException("年齡越界");
}
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
}
package com.wkcto.chapter02.demo03;
/**
* 測試自定義異常
* @author 蛙課網
*
*/
public class Test {
public static void main(String[] args) {
/* //創建Person對象
Person lisi = new Person();
//直接給lisi的各個字段賦值 , 可能會賦值一些無效的值
lisi.name = "lisi";
lisi.age = 188888; //沒有語法錯誤, 沒有意義,賦的值無效, age表示一個人的年齡
lisi.gender = "男";
System.out.println( lisi );*/
//對字段進行封裝后
Person lisisi = new Person();
lisisi.setName("lisis");
//5)對受異常進行預處理
try {
lisisi.setAge( 188888 );
} catch (AgeOutOfBoundsException e) {
e.printStackTrace();
}
lisisi.setGender("妖");
System.out.println( lisisi );
}
}
總結:
1、理解異常是什么,異常的作用
2、掌握異常類的結構: Throwable, Error , Exception, 編譯時異常, 運行時異常
3、掌握異常預處理的方法: 捕獲處理, 拋出處理
4、理解異常預處理方式的選擇? 定義方法, 調用方法
5、記住方法覆蓋中的異常處理
6、掌握自定義異常的方法