歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Java 創建用戶異常類、將異常一直向上拋、 throw和throws的區別

如果java提供的系統異常類型不能滿足程序設計的需求,那麼可以設計自己的異常類型。

從java異常類的結構層次可以看出,java類型的公共父類為Throwable.在程序運行中可能出現倆種問題:一種是由硬件系統或JVM導致的故障,java定義該故障為Error,這類問題是用戶程序不能夠處理的;另外一種問題是程序運行錯誤,java定義為Exception,這種情況下,可以通過程序設計調整來實現異常處理。

因此,用戶定義的異常類型必須是Throwable的直接或間接子類。我推薦大家的異常類型以Exception為直接父類。下面開始我們的自定義異常類之旅... 

1、首先定義自己的異常類AgeOutOfBound

 

/**
* 自定義異常類
* */
public class AgeOutOfBound extends Exception {

public AgeOutOfBound() {
System.out.print("Sorry,age out of bound !");
}
}

2、定義一個類,根據參數值判斷是否拋出異常

/**
 * 定義一個方法,根據參數值決定是否拋出異常
 * */
public class AgeInput {
    public static void checkAage(int age)throws AgeOutOfBound{    //用關鍵字throws指明調用此方法可能拋出的異常
        if(age>0 && age<200){
            System.out.print("right!");
        }else{
            System.out.println("---------------");
            throw new AgeOutOfBound();        //拋出異常用關鍵字throw
        }
    }
}

3、 

/**
 * 測試類,如果有異常場則捕獲
 * */
public class Demo {

    public static void main(String[] args) {
        int age = 100;
        try {
            AgeInput.checkAage(age);
        } catch (AgeOutOfBound e) {
            System.out.println("Are you rellly :" + age + " years old?");
        }
    }

}

運行結果:當age=100,輸入right

    當age = 300,輸出

    ---------------
    Sorry,age out of bound !Are you rellly :300 years old?

如有哪裡不懂,可以到這裡下載項目代碼

------------------------------------------分割線------------------------------------------

免費下載地址在 http://linux.linuxidc.com/

用戶名與密碼都是www.linuxidc.com

具體下載目錄在 /2014年資料/9月/29日/Java 創建用戶異常類、將異常一直向上拋、 throw和throws的區別

下載方法見 http://www.linuxidc.com/Linux/2013-07/87684.htm

------------------------------------------分割線------------------------------------------

補充

下面說說throw和throws的區別
throws關鍵字通常被應用在聲明方法時,用來指定可能拋出的異常。多個異常可以使用逗號隔開。當在主函數中調用該方法時,如果發生異常,就會將異常拋給指定異常對象。如下面例子所示:
public class Shoot {  創建類
static void pop() throws NegativeArraySizeException {
//定義方法並拋出NegativeArraySizeException異常
int [] arr = new int[-3];//創建數組
}
public static void main(String[] args) {//主方法
try {
pop(); //調用pop()方法
} catch (NegativeArraySizeException e) {
System.out.println("pop()方法拋出的異常");//輸出異常信息
}
}
}

2、throw關鍵字通常用在方法體中,並且拋出一個異常對象。程序在執行到throw語句時立即停止,它後面的語句都不執行。通過throw拋出異常後,如果想在上一級代碼中來捕獲並處理異常,則需要在拋出異常的方法中使用throws關鍵字在方法聲明中指明要跑出的異常;如果要捕捉throw拋出的異常,則必須使用try—catch語句。舉例如下:
class MyException extends Exception { //創建自定義異常類
 String message; //定義String類型變量
 public MyException(String ErrorMessagr) {  //父類方法
      message = ErrorMessagr;
 }
 public String getMessage(){  //覆蓋getMessage()方法
  return message;
 }
}
public class Captor { //創建類
static int quotient(int x,int y) throws MyException{//定義方法拋出異常
if(y < 0){  //判斷參數是否小於0
        throw new MyException("除數不能是負數");//異常信息
 }
 return x/y;//返回值
 }
public static void main(String args[]){ //主方法
 try{ //try語句包含可能發生異常的語句
                int result = quotient(3,-1);//調用方法quotient()
    }catch (MyException e) { //處理自定義異常
  System.out.println(e.getMessage()); //輸出異常信息
  }
    catch (ArithmeticException e) {
                  //處理ArithmeticException異常
  System.out.println("除數不能為0");//輸出提示信息
  }
  catch (Exception e) { //處理其他異常
  System.out.println("程序發生了其他的異常");
                  //輸出提示信息
  }
 }
}

大話設計模式(帶目錄完整版) PDF+源代碼 http://www.linuxidc.com/Linux/2014-08/105152.htm

Java中介者設計模式 http://www.linuxidc.com/Linux/2014-07/104319.htm

Java 設計模式之模板方法開發中應用 http://www.linuxidc.com/Linux/2014-07/104318.htm

設計模式之 Java 中的單例模式(Singleton) http://www.linuxidc.com/Linux/2014-06/103542.htm

Copyright © Linux教程網 All Rights Reserved