91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在Java中拋出異常

發布時間:2021-05-07 16:51:46 來源:億速云 閱讀:145 作者:Leah 欄目:編程語言

這篇文章給大家介紹如何在Java中拋出異常,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

Java的特點有哪些

Java的特點有哪些 1.Java語言作為靜態面向對象編程語言的代表,實現了面向對象理論,允許程序員以優雅的思維方式進行復雜的編程。 2.Java具有簡單性、面向對象、分布式、安全性、平臺獨立與可移植性、動態性等特點。 3.使用Java可以編寫桌面應用程序、Web應用程序、分布式系統和嵌入式系統應用程序等。

異常處理常用方法:

常用的異常處理方法有:

  • 一、try()catch() 語句

  • 二、throw / throws 語句

  • 三、自定義異常類

用途:

眾所周知,當程序運行過程中,如果遇到了錯誤(比如數組下標越界,空指針等)程序就會自動終止,但這種錯誤一般是偶然的,可能是用戶輸入不呵呵程序編寫者的意圖導致,而不是程序本身問題,這是我們要做的,是讓操作者知道發生了什么事情,而不是直截了當的結束程序,這時我們就用到了異常處理(語句發生錯誤時,只拋出異常,而不結束程序)。

這里一源碼為例 詳細介紹一下:

一、try()catch() 語句:

原理剖析:

將可能發生異常的語句放在 tr() 中,運行到try這一行時,如果無異常,則正常執行 try() 中語句,執行完 try() 內語句之后,程序自動跳過 catch() 語句,去執行 catch() 之后的語句。

反之,如果在執行 try() 內語句時,出現異常情況,則執行跳轉到catch()語句中,進行異常處理,一處處以之后不再回到try的()內,而是結束try()catch()內的所有操作,去運行后面的catch語句后面的語句。

舉個例子就明白了:

public class ClassText {
    public static void main(String[] args) {
        int textArray[] = new int[3];//用于測試數組越界異常的數組
        int j;//用來使數組月結的下標
        try {
            for ( j = 0; j < (textArray.length + 1); j++) {//有+1可見 該測試一定越界
                textArray[j] = (int) Math.random()*10 ;
            }
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }
        System.out.println("但是上面拋出異常后\n程序并沒有直接結束\n"
                + "而是跳出try()catch()語句\n正常執行本條輸出語句");
    }
}

輸出如下:

可以看到,發生異常后依然執行了后面的輸出語句。

如何在Java中拋出異常

二、throw / throws 語句

很多出初學者一直把throw / throws 語句,看作兩種不同的異常處理方法,其實他們可以看作一個整體,throw語句可以看作異常的處理語句,而throws我們則可以將其類比為‘extends' 它的主要作用是聲明該方法(體內存在throw語句的方法,需要throws或者說我們可以看作需要‘繼承/鏈接',該異常類型的原型),舉個例子大家就明白了:

private static void textThrow_Throws(int radius) throws Exception {
    if ( radius < 0 ) {//如果半徑小于0 則不符合常理進行異常處理
        throw new Exception();
    }
}

這樣一來throw/throws 的用法就顯而易見了。

但是在寫完throw/throws 語句后,異常處理并沒有結束,因為這里只是簡單聲明了,我的這個成員方法中的可能會拋出異常,并沒有寫具體該如何處理這個異常,所以這是在主函數中,就要用try()catch()將他們包圍。描述好具體的處理異常方法:完整測試代碼如下:

public class ClassText {
    public static void main(String[] args) {
        int radius ;//定義一個叫做搬進的變量作為測試
        radius = -5;//常理可知半徑使正數
        try {
            textThrow_Throws(radius);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        System.out.println("程序正常結束~");
    }
    private static void textThrow_Throws(int radius) throws Exception {
        if ( radius < 0 ) {//如果半徑小于0 則不符合常理進行異常處理
            throw new Exception();
        }
    }
}

我們再看看輸出范例:

如何在Java中拋出異常

三、自定義異常類

自定義異常類是逃不開,也是新手接觸最少的,其實它的基本使用方法還是很簡單的,自定義異常處理類,只包括兩部分:(1)、類的構造方法,構造方法的建立則非常簡單,其實只要繼承父類(比如 Exception類 )的構造方法即可。(2)、重寫toString()函數,這是最重要的一點,再toString函數中,描述具體發生了什么錯誤導致了異常的拋出。這樣一來用戶才知道究竟是發生了什么錯誤

這里結合throw/throws 舉個例子就很好明白了:

1.首先自定義一個異常類:

public class ArrayIndexException extends Exception{
    public ArrayIndexException() {
        // TODO Auto-generated constructor stub
        super();
    }
    @Override
    public String toString() {
        // TODO Auto-generated method stub
        return"程序發生了越界異常! 請檢查下標變化!";
    }
}

如上所示就是一個最基本的自定義異常類 ,它繼承了Exception 并且重寫了構造方法以及toString方法

2.現在我們嘗試再主函數中調用它

public class ClassText {
    public static void main(String[] args) {
        int textArray[] = new int[3];//用于測試數組越界異常的數組
        try {
            textSetArray(textArray);//調用下方數組賦值方法
        } catch (ArrayIndexException e) {
            // TODO: handle exception
            e.printStackTrace();//如果發生了異常 則拋出自定義數組越界異常
        }
        System.out.println("go on !");
        for(int j = 0 ; j < textArray.length ; j++ )
            System.out.print(textArray[j] + "\t");//再越界之前的數成功賦值
    }
    private static void textSetArray(int[] textArray) throws ArrayIndexException{
        for ( int j = 0; j < (textArray.length + 1); j++) {//有+1可見 該測試一定越界
            textArray[j] = 5 ;//給數組原屬賦值
        }
    }
}

如上所示,如果發生了異常,這才catch()語句中聲稱自定義的異常對象,并輸出具體信息:

如何在Java中拋出異常

關于如何在Java中拋出異常就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

青州市| 苍山县| 武陟县| 丰都县| 朔州市| 枣强县| 沛县| 呼和浩特市| 固安县| 弥勒县| 巴南区| 婺源县| 大同县| 汶上县| 和顺县| 内江市| 滕州市| 安龙县| 朝阳区| 兴山县| 元阳县| 彰化县| 柳河县| 亳州市| 华容县| 南漳县| 兰考县| 宿州市| 江阴市| 阿拉善右旗| 永泰县| 博野县| 大同县| 犍为县| 驻马店市| 高邮市| 定州市| 儋州市| 祁门县| 沧源| 隆回县|