創建自定義的異常類需要繼承自Exception類,並提供含有一個String類型形參的構造方法,該形參就是一場的描述信息,可以通過getMessage()方法獲得。例如:
public class NullPointerException extends Exception{
public NullPointerException(String message) {
super(message);
}
}
建立一個抽象德汽車父類,並創建顯示信息的方法getInfo()
public abstract class Polymorphic102 {
public abstract void getInfo();
}
分別建立兩個子類(BMW&Benz)繼承父類,並重寫父類的getInfo方法用來打印相關信息:
public class Benz102 extends Polymorphic102 {
@Override
public void getInfo() {
//return "Benz";
System.out.println("賓利");
}
}
public class BMW102 extends Polymorphic102 {
@Override
public void getInfo() {
// return "BMW";
System.out.println("寶馬");
}
}
編寫測試類進行測試:
import java.util.Scanner;
public class Test102 {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
System.out.println("請輸入需要購買的品牌");
try {//監控異常
String name = input.nextLine();
Polymorphic102 car = getCar(name);
car.getInfo();
} catch (NullPointerException e) {
System.out.println("車庫無此類品牌車");
}
}
//通過創建一個靜態的方法來進行實例化
//通過throws在類中聲明之前自定義的異常,表示在運行中可能會出現該類異常
//在本類中不處理該異常,通過調用該方法的對象去監控處理!
public static Polymorphic102 getCar(String name)throws NullPointerException{
if(name.equalsIgnoreCase("BMW")){
return new BMW102();
}
if(name.equalsIgnoreCase("Benz")){
return new Benz102();
}
else{
//拋出異常
throw new NullPointerException("車庫無此類品牌車");
}
}
}
通過上面例子我們可以實現用戶自行選擇購車功能,當用戶輸入品牌時車庫無此類品牌時就會觸發異常,然後進行處理: