首頁  >  文章  >  Java  >  java中什麼是異常

java中什麼是異常

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼原創
2019-11-12 15:39:214293瀏覽

java中什麼是異常

Java 中的例外(Exception)又稱為例外,是一個在程式執行期間​​發生的事件,它中斷正在執行的程式的正常指令流。為了能夠及時有效地處理程式中的運行錯誤,必須使用異常類別。

異常簡介

在程式中,錯誤可能產生於程式設計師沒有預料到的各種情況,或超出程式設計師可控範圍的環境,例如用戶的壞數據、試圖開啟一個不存在的文件等。為了能夠及時有效地處理程式中的運行錯誤,Java 專門引入了異常類別。

範例 1

為了更好地理解什麼是異常,以下來看一段非常簡單的 Java 程式。下面的範例程式碼實現了允許使用者輸入 1~3 以內的整數,其他情況提示輸入錯誤。

package ch11;
import Java.util.Scanner;
public class TestO1
{
    public static void main(String[] args)
    {
        System.out.println("请输入您的选择:(1~3 之间的整数)");
        Scanner input=new Scanner(System.in);
        int num=input.nextInt();
        switch(num)
        {
            case 1:
                System.out.println("one");
                break;
            case 2:
                System.out.println("two");
                break;
            case 3:
                System.out.println("three");
                break;
            default:
                System.out.println("error");
                break;
        }
    }
}

正常情況下,使用者會依照系統的提示輸入 1~3 之間的數字。但是,如果使用者沒有按要求進行輸入,例如輸入了一個字母“a”,則程式在運行時將會發生異常,運行結果如下所示。

请输入您的选择:(1~3 之间的整数)
a
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at text.text.main(text.java:11)

異常產生的原因及使用原則

在Java 中一個例外的產生,主要有以下三種原因:

#1、Java內部錯誤發生異常,Java 虛擬機器產生的異常。

2、編寫的程式碼中的錯誤所產生的異常,例如空指標異常、陣列越界異常等。這種異常稱為未檢査的異常,一般需要在某些類別中集中處理這些異常。

3、透過 throw 語句手動產生的異常,這種異常稱為檢査的異常,一般用來告知該方法的呼叫者一些必要的資訊。

Java 透過物件導向的方法來處理例外狀況。在一個方法的運行過程中,如果發生了異常,則這個方法會產生代表該異常的一個對象,並把它交給運行時的系統,運行時系統尋找相應的代碼來處理這一異常。

我們把產生異常對象,並把它提交給運行時系統的過程稱為拋出(throw)異常。運行時系統在方法的呼叫堆疊中查找,直到找到能夠處理該類型異常的對象,這一個過程稱為捕獲(catch)異常。

Java 異常強制使用者考慮程式的強度和安全性。異常處理不應用來控製程式的正常流程,其主要作用是捕獲程式在運行時發生的異常並進行相應處理。編寫程式碼處理某個方法可能出現的異常,可遵循以下三個原則:

1、在目前方法宣告中使用 try catch 語句擷取異常。

2、一個方法被覆寫時,覆寫它的方法必須拋出相同的異常或異常的子類別。

3、如果父類別拋出多個異常,則覆蓋方法必須拋出那些異常的子集,而不能拋出新異常。

異常類型

在 Java 中所有異常類型都是內建類別 java.lang.Throwable 類別的子類,即 Throwable 位於異常類別層次結構的頂層。 Throwable 類別下有兩個異常分支 Exception 和 Error,如圖 1 所示。

java中什麼是異常

由圖 2 可以知道,Throwable 類別是所有異常和錯誤的超類,下面有 Error 和 Exception 兩個子類分別表示錯誤和異常。其中異常類別 Exception 又分為運行時異常和非運行時異常,這兩種異常有很大的區別,也稱為不檢查異常(Unchecked Exception)和檢查異常(Checked Exception)。

·Exception 類別用於使用者程式可能出現的例外情況,它也是用來建立自訂例外類型類別的類別。

·Error 定義了在通常環境下不希望被程式捕獲的例外。 Error 類型的異常用於 Java 運行時由系統顯示與運行時系統本身相關的錯誤。堆疊溢位是這種錯誤的一例。

·本章不討論關於 Error 類型的例外處理,因為它們通常是災難性的致命錯誤,不是程式可以控制的。本章接下來的內容將討論 Exception 類型的異常處理。

執行階段異常都是 RuntimeException 類別及其子類別異常,如 NullPointerException、IndexOutOfBoundsException 等,這些異常是不檢查異常,程式中可以選擇捕獲處理,也可以不處理。這些異常一般由程式邏輯錯誤所引起,程式應該從邏輯角度盡量避免這類異常的發生。

非執行時期異常是指 RuntimeException 以外的異常,且類型上都屬於 Exception 類別及其子類別。從程式語法角度講是必須進行處理的異常,如果不處理,程式就不能編譯通過。如 IOException、ClassNotFoundException 等以及使用者自訂的 Exception 異常,一般情況下不自訂檢查異常。表 1 列出了一些常見的異常類型及它們的作用。

java中什麼是異常

php中文網,大量的免費Java入門教學,歡迎線上學習!

以上是java中什麼是異常的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn