Java自定義異常

    先看標準的例子:

Test.java

/*
	模擬註冊
*/
public class Test{

	public static void main(String[] args){
		
		//假如用戶提供的用戶名如下
		String username = "xpleaf";
		
		//註冊
		CustomerService cs = new CustomerService();
		
		try{
			cs.register(username);
		}catch(IllegalNameException e){
			System.out.println(e.getMessage());
		}
		
		
	}
}

CustomerService.java

//顧客相關的業務
public class CustomerService{
	
	//對外提供一個註冊的方法
	public void register(String name) throws IllegalNameException{
		
		//完成註冊
		if(name.length()<6){
			
			//異常
			//創建異常對象
			//IllegalNameException e = new IllegalNameException("用戶名長度不能少6位");
			
			//手動拋出異常
			//throw e;
			throw new IllegalNameException("用戶名長度不能少6位");
		}
		
		//如果代碼能執行到此處,證明用戶名是合法的.
		System.out.println("註冊成功!");
		
	}
	
}

IllegalNameException.java

/*
	自定義“無效名字異常”.
		1.編譯時異常,直接繼承Exception
		2.運行時異常,直接繼承RuntimeException
*/
public class IllegalNameException extends Exception{ //編譯時異常
//public class IllegalNameException extends RuntimeException{ //運行時異常
	
	//定義異常一般提供兩個構造方法
	public IllegalNameException(){}
	
	
	public IllegalNameException(String msg){
		super(msg);
	}
	
}

    其實比較簡單,只要把相關的類創建好就OK了,最關鍵是在異常處理類中繼承Exception。


    根據此,再寫一個自定義異常,要求如果輸入的數字大於100,則拋出異常:

Main_pro.java

import java.util.Scanner;

public class Main_pro {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		System.out.println("Please input a number for a:");
		Scanner s = new Scanner(System.in);
		int a = s.nextInt();
		
		Num_check check = new Num_check();
		try{
			check.checknum(a);
		}
		catch(NumError e){
			System.out.println(e.getMessage());
		}
	}

}

Num_check.java

public class Num_check {
	public void checknum(int num) throws NumError{
		
		if (num>=100){
			throw new NumError("Error!");
		}
		System.out.println("The number is normal.");
	}
}

NumError.java

public class NumError extends Exception{
	public NumError(){}
	
	public NumError(String msg){
		super(msg);
	}
}


    通過上面兩個例子,再對比Python中的異常處理,最大的感想是:Python的真的要簡潔好多!當然,這是因爲在Java中,每一個方法都要寫成一個類,而在Python中,不一定要使用面向對象的程序設計思想,因此可以簡潔很多。

    關於Python異常處理的詳細說明,可以參考前面我寫的文章:

【Python之旅】第四篇(二):Python異常處理與異常捕捉

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章