最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中的異常Exception詳細(xì)解析

 更新時(shí)間:2024年01月12日 08:55:19   作者:咕咕貓_  
這篇文章主要介紹了Java中的異常Exception詳細(xì)解析,Java語(yǔ)言中,將程序執(zhí)行中發(fā)生的不正常情況稱為"異常",(開發(fā)過程中的語(yǔ)法錯(cuò)誤和邏輯錯(cuò)誤不是異常),異常分為兩大類,運(yùn)行時(shí)異常和編譯時(shí)異常,需要的朋友可以參考下

一、基本介紹

基本概念

Java語(yǔ)言中,將程序執(zhí)行中發(fā)生的不正常情況稱為“ 異常 ”。(開發(fā)過程中的語(yǔ)法錯(cuò)誤和邏輯錯(cuò)誤不是異常)

執(zhí)行過程中所發(fā)生的異常事件可分為兩大類

1.Error(錯(cuò)誤):Java虛擬機(jī)無法解決的嚴(yán)重問題。如:JVM系統(tǒng)內(nèi)部錯(cuò)誤、資源耗盡等嚴(yán)重情況。比如:StackOverflowError[棧溢出]和OOM(out of memory),Error是嚴(yán)重錯(cuò)誤,程序會(huì)崩潰

2.Exception:其它因編譯錯(cuò)誤和偶然的外在因素導(dǎo)致的一般性問題,可以使用針對(duì)性的代碼進(jìn)行處理。例如空指針訪問,試圖讀取不存在的文件,網(wǎng)絡(luò)連接中斷等等,Exception分為兩大類:運(yùn)行時(shí)異常[程序運(yùn)行時(shí)發(fā)生的異常]和編譯時(shí)異常[編程時(shí)編譯器檢查出的異常]

異常類層次結(jié)構(gòu)圖

異常體系圖小結(jié):

1.異常分為兩大類,運(yùn)行時(shí)異常和編譯時(shí)異常

2.運(yùn)行時(shí)異常,編譯器檢查不出來。一般是指編程時(shí)的邏輯錯(cuò)誤,是程序員應(yīng)該避免其出現(xiàn)的異常。java.lang.RuntimeException類及它的子類都是運(yùn)行時(shí)異常

3.對(duì)于運(yùn)行時(shí)異??梢圆蛔鎏幚恚?yàn)檫@類異常很普遍,若全處理可能會(huì)對(duì)程序的可讀性和運(yùn)行效率產(chǎn)生影響

4.編譯時(shí)異常是編譯器要求必須處置的異常

常見的運(yùn)行時(shí)異常

1. NullPointerException 空指針異常

當(dāng)應(yīng)用程序試圖在需要對(duì)象的地方使用null時(shí),會(huì)拋出此異常

2. ArithmeticException 數(shù)學(xué)運(yùn)算異常

當(dāng)出現(xiàn)異常的運(yùn)算條件時(shí),會(huì)拋出此異常

3. ArrayIndexOutOfBoundsException 數(shù)組下標(biāo)越界異常

用非法索引訪問數(shù)組時(shí)拋出的異常。如果索引為負(fù)或大于等于數(shù)組大小,則該索引為非法索引

4. ClassCastException 類型轉(zhuǎn)換異常

當(dāng)試圖將對(duì)象強(qiáng)制轉(zhuǎn)換為不是實(shí)例的子類時(shí),會(huì)拋出此異常

5.NumberFormatException 數(shù)字格式不正確異常

當(dāng)應(yīng)用程序試圖將字符串轉(zhuǎn)換成一種數(shù)值類型,但該字符串不能轉(zhuǎn)換為適當(dāng)格式,會(huì)拋出此異常—>使用異常我們可以確保輸入是滿足條件數(shù)字

二、異常處理

基本介紹

異常處理就是當(dāng)異常發(fā)生時(shí),對(duì)異常處理的方式

異常處理的方式

1. try—catch—finally :程序員在代碼中捕獲發(fā)生的異常,自行處理

2. throws :將發(fā)生的異常拋出,交給調(diào)用者(方法)來處理,最頂級(jí)的處理者就是JVM

三、try-catch異常處理

1.Java提供try和catch塊來處理異常。try塊用于包含可能出錯(cuò)的代碼。catch塊用于處理try塊中發(fā)生的異常??梢愿鶕?jù)需要在程序中有多個(gè)try...catch塊

2.基本語(yǔ)法

try{
    //可疑代碼
    //將異常生成對(duì)應(yīng)的異常對(duì)象,傳遞給catch塊
}catch{
    //對(duì)異常的處理
}
//如果沒有finally,語(yǔ)法也可以通過

3. try-catch方式處理異常注意事項(xiàng)

①如果異常發(fā)生了,則異常發(fā)生后面的代碼不會(huì)執(zhí)行,直接進(jìn)入到catch塊

②如果異常沒有發(fā)生,則順序執(zhí)行try的代碼塊,不會(huì)進(jìn)入到catch

③如果希望不管是否發(fā)生異常,都執(zhí)行某段代碼(比如關(guān)閉連接,釋放資源等)則使用代碼 -finally{ }

try{
    //可疑代碼
}catch(異常){
    //....
}finally{
    //釋放資源等..
}

4.可以有多個(gè)catch語(yǔ)句捕獲不同的異常(進(jìn)行不同的業(yè)務(wù)處理),要求子類異常寫在前面,父類異常寫在后面,比如(NullPointerException在前,Exception在后),如果發(fā)生異常,只會(huì)匹配一個(gè)catch

5.可以進(jìn)行try-finally配合使用,這種用法相當(dāng)于沒有捕獲異常,依次程序會(huì)直接崩掉/退出。應(yīng)用場(chǎng)景就是執(zhí)行一段代碼,不管是否發(fā)生異常,都必須執(zhí)行某個(gè)業(yè)務(wù)邏輯

try-catch-finally執(zhí)行順序小結(jié)

1.如果沒有出現(xiàn)異常,則執(zhí)行try塊中所有語(yǔ)句,不執(zhí)行catch塊中語(yǔ)句,如果有finally,最后還需要執(zhí)行finally里面的語(yǔ)句

2.如果出現(xiàn)異常,則try塊中異常發(fā)生后,try塊剩下的語(yǔ)句不會(huì)再執(zhí)行。將執(zhí)行catch塊中的語(yǔ)句,如果有finally,最后還需要執(zhí)行finally里的語(yǔ)句

public class TryCatchDetail {
    public static void main(String[] args) {
        //快捷鍵ctrl + alt + t
        //解讀
        //1.如果發(fā)生異常,則異常后面的代碼塊不會(huì)執(zhí)行,直接進(jìn)入到catch塊
        //2.如果異常沒有發(fā)生,則順序執(zhí)行try的代碼塊,不會(huì)進(jìn)入到catch
        //3.如果希望不管是否發(fā)生異常,都執(zhí)行某段代碼塊(比如關(guān)閉連接,釋放資源等)則使用代碼— finally
        try {
            String str = "123";
            int a = Integer.parseInt(str);
            System.out.println("數(shù)字:" + a);
        } catch (NumberFormatException e) {
            System.out.println("異常信息=" + e.getMessage());
        }finally{
            System.out.println("finally代碼塊被執(zhí)行...");
        }
        System.out.println("程序繼續(xù)執(zhí)行...");
    }
}
public class TryCatchDetail02 {
    public static void main(String[] args) {
        //解讀
        //1.如果try代碼塊可能有多個(gè)異常
        //2.可以使用多個(gè)catch分別捕獲不同的異常,相應(yīng)處理
        //3.要求子類異常寫在前面,父類異常寫在后面
        try {
            Person person = new Person();
            person = null;
            System.out.println(person.getName());//NullPointerException
            int n1 = 10;
            int n2 = 0;
            int res = n1 / n2;//ArithmeticException
        }catch (NullPointerException e) {
            System.out.println("空指針異常=" + e.getMessage());
        }catch(ArithmeticException e) {
            System.out.println("算數(shù)異常=" + e.getMessage());
        }catch (Exception e) {
            System.out.println("異常信息=" + e.getMessage());
        }finally {
        }
    }
}
class Person {
    private String name;
    public String getName() {
        return name;
    }
}
public class TryCatchDetail03 {
    public static void main(String[] args) {
        /*
        可以進(jìn)行try-finally配合使用,這種用法相當(dāng)于沒有捕獲異常,因此程序會(huì)直接崩掉/退出。
        應(yīng)用場(chǎng)景就是執(zhí)行一段代碼,不管是否發(fā)生異常,都必須執(zhí)行某個(gè)業(yè)務(wù)邏輯
         */
        try{
            int n1 = 10;
            int n2 = 0;
            System.out.println(n1 / n2);
        }finally {
            System.out.println("執(zhí)行了finally...");
        }
        System.out.println("程序繼續(xù)執(zhí)行...");
    }
}

四、thorws異常處理

基本介紹

1.如果一個(gè)方法中的語(yǔ)句執(zhí)行時(shí)可能生成某種異常,但是并不能確定如何處理這種異常,則此方法應(yīng)顯示地聲明拋出異常,表明該方法將不對(duì)這些異常進(jìn)行處理,而由該方法的調(diào)用者負(fù)責(zé)處理

2.在方法生命中用throws語(yǔ)句可以聲明拋出異常的列表,thros后面的異常類型可以是方法中產(chǎn)生的異常類型,也可以是它的父類

注意事項(xiàng)和使用細(xì)節(jié)

1.對(duì)于編譯異常,程序中必須處理,比如try-catch或者throws

2.對(duì)于運(yùn)行時(shí)異常,程序中如果沒有處理,默認(rèn)就是throws的方式處理

3.子類重寫父類的方法時(shí),對(duì)拋出異常的規(guī)定:子類重寫的方法,所拋出的異常類型要么和父類拋出的異常一致,要么為父類拋出的異常的子類型

4.在throws過程中,如果有方法try-catch,就相當(dāng)于處理異常,就可以不必throws

五、自定義異常

基本概念

當(dāng)程序中出現(xiàn)了某些“錯(cuò)誤”,但該錯(cuò)誤信息并沒有在Throwable子類中描述處理,這個(gè)時(shí)候可以自己設(shè)計(jì)異常類,用于描述該錯(cuò)誤信息

自定義異常的步驟

1.定義類:自定義異常類名繼承Exception或RuntimeException

2.如果繼承Exception,屬于編譯異常

3.如果繼承RuntimeException,屬于運(yùn)行異常(一般來說,繼承RuntimeException)

六、throw和throws的區(qū)別

意義位置后面跟的東西
throws異常處理的一種方式方法聲明處異常類型
throw手動(dòng)生成異常對(duì)象的關(guān)鍵字方法體中異常對(duì)象

到此這篇關(guān)于Java中的異常Exception詳細(xì)解析的文章就介紹到這了,更多相關(guān)Java異常Exception內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • spring中REST和RESTful的區(qū)別以及基本實(shí)現(xiàn)

    spring中REST和RESTful的區(qū)別以及基本實(shí)現(xiàn)

    本文主要介紹了spring中REST和RESTful的區(qū)別以及基本實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • Java 在PDF中添加騎縫章示例解析

    Java 在PDF中添加騎縫章示例解析

    這篇文章主要介紹了Java 在PDF中添加騎縫章示例解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Java Web Listener實(shí)現(xiàn)事件監(jiān)聽與處理

    Java Web Listener實(shí)現(xiàn)事件監(jiān)聽與處理

    Java Web開發(fā)中的Listener是一種事件機(jī)制,通過監(jiān)聽Web應(yīng)用程序的事件,實(shí)現(xiàn)對(duì)事件的處理,從而實(shí)現(xiàn)更加靈活和高效的應(yīng)用程序開發(fā)。Listener能夠監(jiān)聽的事件包括應(yīng)用程序啟動(dòng)和關(guān)閉、Session創(chuàng)建和銷毀、請(qǐng)求和響應(yīng)對(duì)象的創(chuàng)建和銷毀等
    2023-04-04
  • Java利用ITextPdf庫(kù)生成PDF預(yù)覽文件的具體實(shí)現(xiàn)

    Java利用ITextPdf庫(kù)生成PDF預(yù)覽文件的具體實(shí)現(xiàn)

    這篇文章主要給大家介紹了Java利用ITextPdf庫(kù)生成PDF預(yù)覽文件的具體實(shí)現(xiàn),文中通過代碼示例和圖文給大家介紹的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下
    2024-04-04
  • java實(shí)現(xiàn)視頻轉(zhuǎn)碼工具類

    java實(shí)現(xiàn)視頻轉(zhuǎn)碼工具類

    這篇文章主要介紹了java實(shí)現(xiàn)視頻轉(zhuǎn)碼,涉及到工具類用到的參數(shù),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-01-01
  • JAVA中 終止線程的方法介紹

    JAVA中 終止線程的方法介紹

    JAVA中 終止線程的方法介紹,需要的朋友可以參考一下
    2013-03-03
  • Spring框架中的跨域CORS配置的完整教學(xué)

    Spring框架中的跨域CORS配置的完整教學(xué)

    CORS(Cross-Origin?Resource?Sharing,跨域資源共享)是一種機(jī)制,允許在瀏覽器中向不同源(域名、協(xié)議或端口不同)的服務(wù)器發(fā)起請(qǐng)求,下面我們就來看看如何在Spring框架配置跨域CORS吧
    2025-10-10
  • java鎖機(jī)制ReentrantLock源碼實(shí)例分析

    java鎖機(jī)制ReentrantLock源碼實(shí)例分析

    這篇文章主要為大家介紹了java鎖機(jī)制ReentrantLock源碼實(shí)例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • Java中小球碰撞并使用按鈕控制數(shù)量實(shí)例代碼

    Java中小球碰撞并使用按鈕控制數(shù)量實(shí)例代碼

    這篇文章主要給大家介紹了關(guān)于Java中小球碰撞并使用按鈕控制數(shù)量的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2021-12-12
  • Java請(qǐng)求Http接口OkHttp超詳細(xì)講解(附帶工具類)

    Java請(qǐng)求Http接口OkHttp超詳細(xì)講解(附帶工具類)

    這篇文章主要給大家介紹了關(guān)于Java請(qǐng)求Http接口OkHttp超詳細(xì)講解的相關(guān)資料,OkHttp是一款優(yōu)秀的HTTP客戶端框架,文中通過代碼示例介紹的非常詳細(xì),需要的朋友可以參考下
    2024-02-02

最新評(píng)論

灵台县| 乌拉特中旗| 县级市| 襄垣县| 庆元县| 辽阳市| 富阳市| 合山市| 河东区| 昂仁县| 汤阴县| 蒲江县| 庆阳市| 密山市| 保山市| 大丰市| 池州市| 尉犁县| 中方县| 晋江市| 高碑店市| 乾安县| 藁城市| 夏河县| 同江市| 黎城县| 信丰县| 苏尼特左旗| 安平县| 望奎县| 双流县| 永新县| 武城县| 凤翔县| 南漳县| 肇州县| 通山县| 上饶市| 宣恩县| 巧家县| 延安市|