• <em id="6vhwh"><rt id="6vhwh"></rt></em>

    <style id="6vhwh"></style>

    <style id="6vhwh"></style>
    1. <style id="6vhwh"></style>
        <sub id="6vhwh"><p id="6vhwh"></p></sub>
        <p id="6vhwh"></p>
          1. 国产亚洲欧洲av综合一区二区三区 ,色爱综合另类图片av,亚洲av免费成人在线,久久热在线视频精品视频,成在人线av无码免费,国产精品一区二区久久毛片,亚洲精品成人片在线观看精品字幕 ,久久亚洲精品成人av秋霞

            runtimeexception

            更新時間:2023-03-02 07:04:07 閱讀: 評論:0

            難度

            初級

            學習時間

            30分鐘

            適合人群

            零基礎

            開發語言

            Java

            開發環境JDK v11IntelliJ IDEA v2018.3友情提示本教學屬于系列教學,內容具有連貫性,本章使用到的內容之前教學中都有詳細講解。本章內容針對零基礎或基礎較差的同學比較友好,可能對于有基礎的同學來說很簡單,希望大家可以根據自己的實際情況選擇繼續看完或等待看下一篇文章。謝謝大家的諒解!1.異常體系

            在Java異常這個大家族中,Throwable是這個異常家族中的老大,它下面有兩個靠譜老弟,一個叫“Error”,一個叫“Exception”。Error老弟負責錯誤部門,Exception老弟負責異常部門,在Exception部門下面有一個特殊的弟弟,叫“RuntimeException”,RuntimeException負責運行時異常,它們各司其職。什么叫“運行時異常”?下一小節給大家解釋,先看看它們的結構圖:

            紅色部分就是RuntimeException(運行時異常)。可以看到它位于Exception的下面,屬于Exception的子類。

            Throwable在《“全棧2019”Java異常第十六章:Throwable詳解》一章中已經介紹過了。

            Error在《“全棧2019”Java異常第十七章:Error詳解》一章中介紹過。

            而Exception在上一章《“全棧2019”Java異常第十八章:Exception詳解》中介紹過。

            本章就來介紹RuntimeException。

            2.運行時異常

            “異常”這個詞我們并不陌生,在Java異常系列文章的第一篇《“全棧2019”Java異常第一章:什么是異常?》中,我們就認識了異常。

            那什么是運行時異常呢?

            運行時異常是在Java虛擬機的正常運行期間可以拋出的那些異常。

            不明白沒有關系,我們來分詞解釋+舉例說明。

            “運行時異常是 在Java虛擬機的正常運行期間 可以拋出的 那些異常。”分為四組來看,分別是“運行時異常是”、“在Java虛擬機的正常運行期間”、“可以拋出的”和“那些異常”。

            其中,“在Java虛擬機的正常運行期間”指的是JVM正常運行期間,通俗來說就是應用程序正常運行期間。“可以拋出的”指的是可以被throw的異常,只有Throwable及其子類才能被拋出,而RuntimeException就是Throwable的子類。

            綜上所述,運行時異常就是在應用程序運行期間拋出的異常。

            這里我們再來一個例子感受一下。

            演示:

            請制造一個運行時異常。

            請觀察程序代碼及結果。

            代碼:

            Main類:

            結果:

            我們先不著急看結果,先看程序代碼:

            大家有什么發現沒有?

            程序內容是計算1除以0,但我們知道0不能被任何數除,所以程序運行到這里必定發生異常。既然會發生異常,為什么程序在運行前沒有強制我們使用try-catch或throws處理呢?

            因為運行時異常是“未檢查的異常”,和“已檢查的異常”不同的是,未檢查的異常不需要強制try-catch和throws的,編譯期間也不對其進行檢查。所以上述程序代碼可以編譯通過,照常運行。

            3.什么是檢查?

            這里小伙伴可能有疑問:“未檢查的異常”和“已檢查的異常”里面的“檢查”是什么意思?

            檢查的意思就是看你對這些已檢查的異常有沒有進行try-catch或throws處理。

            4.已檢查的異常

            那“未檢查的異常”和“已檢查的異常”分別是什么?

            我們先來說說什么是已檢查的異常?已檢查的異常前面幾章學習過,這里簡單地來回顧一下,已檢查的異常就是應用程序中可以預測和恢復的異常。

            圖中紅色部分都是已檢查異常。

            比如其中的FileNotFoundException(找不到文件異常):

            當發生FileNotFoundException異常時,我們可以對其try-catch處理,然后在catch代碼塊里面告知用戶文件路徑輸入有誤,請核對后再輸入:

            類似于FileNotFoundException這樣的已檢查的異常有很多,它們旨在幫助我們完善用戶體驗,增強程序的健壯性。

            5.預測與恢復

            “已檢查的異常就是應用程序中可以預測和恢復的異常。”中的預測和恢復是什么意思?

            預測:提前預知這里將會發生異常。

            例如,這里可能發生文件不存在的情況:

            恢復:對其發生的異常采取措施(try-catch或throws),使其程序正常運行。

            例如,我們對將來可能發生的異常進行處理:

            6.未檢查的異常

            那什么是未檢查的異常呢?

            對照已檢查的異常,未檢查的異常就是應用程序中無法預測和恢復的異常。

            圖中紅色部分都是未檢查異常。

            Error及其子類和RuntimeException及其子類都是未檢查的異常。

            未檢查異常有什么特殊之處嗎?

            未檢查的異常在編譯時乃至在運行時,都不需要你強制使用try-catch或throws對其處理。

            例如,我們的算術異常ArithmeticException,下面程序只有在運行時才會發生異常:

            實際開發中,我們接觸到最多的未檢查的異常就是RuntimeException及其子類。例如:ClassCastException(類型轉換異常)和NullPointerException(空指針異常)。

            7.RuntimeException

            接下來,我們來看看RuntimeException類和它的子類們。

            RuntimeException是所有運行時異常的父類。

            圖中紅色部分都是運行時異常。可以看到有我們熟悉的算術異常ArithmeticException和空指針異常NullPointerException。

            RuntimeException繼承自Exception:

            RuntimeException類里面的成員方法全部繼承自父類,一個自定義的成員方法都沒有,只有構造方法是自定義的:

            我們把注釋去掉再看看:

            既然RuntimeException中的成員方法全部來自于父類,那么也就是說父類中的常用方法也就是我們RuntimeException中最常用的方法,之前在《“全棧2019”Java異常第十六章:Throwable詳解》、《“全棧2019”Java異常第十八章:Exception詳解》兩章中講解過它的父類Exception和Throwable常用方法,這里就不再贅述,請大家諒解。

            拋出一個RuntimeException及其子類是我們實際開發中常用的做法,也是我們常常碰到的異常。比如ClassCastException(類型轉換異常)和NullPointerException(空指針異常)。

            8.類型轉換異常ClassCastException

            將對象強制轉換為不是實例的子類就會發生類型轉換異常。

            上面這句話什么意思?

            下面結合例子來解釋說明。

            演示:

            請制造一個類型轉換異常。

            請觀察程序代碼及結果。

            代碼:

            Main類:

            結果:

            錯誤信息:

            文字版:

            Exception in thread "main" java.lang.ClassCastException: class java.lang.Integer cannot be cast to class java.lang.String (java.lang.Integer and java.lang.String are in module java.ba of loader 'bootstrap')

            at main.Main.main(Main.java:12)

            我們先來看看程序代碼,首先,我們創建一個變量i:

            這個變量i的引用類型是Object:

            變量i的實際對象是new Integer(0),對象的類型是Integer:

            下面我們將變量i轉換為String類型然后進行打印輸出:

            就在這時,程序發生了類型轉換異常:

            我們出錯的根本原因就是我們將對象的類型Integer轉換String,而Integer和String不是同一個類型,同一個類型指的是同一個類及其子類,什么意思?

            比如,Integer類及其它下面的子類可以稱為同一類型。String類及其它下面的子類也可以稱為同一類型。但Integer和String不能稱為同一類型。

            我們再來將“將對象強制轉換為不是實例的子類就會發生類型轉換異常。”這句話結合例子來看。

            “將對象強制轉換為不是實例的子類”中的“對象”指的是new Integer(0):

            “實例的子類”中的“實例”指的也是對象,也就是new Integer(0)。所以,“實例的子類”指的是Integer類及其子類。

            綜上所述,“將對象強制轉換為不是實例的子類”這句話就是“將Integer強制轉換為不是Integer類及其子類”,所以就發生了類型轉換異常。

            實際上,是不是這樣的呢?

            實際上就是這樣的,我們將Integer轉換為了String,而String不是Integer類及其子類。

            類型轉換異常在日常開發中很常見,希望大家把這個例子理解透徹,后面再解決類型轉換異常就游刃有余。

            9.空指針異常NullPointerException

            當使用的對象為null時就會拋出NullPointerException。

            例如下面這些情況。

            調用null對象的實例方法

            代碼:

            結果:

            訪問或修改null對象的字段

            代碼:

            結果:

            拋出的異常為null

            代碼:

            結果:

            還有很多觸發NullPointerException異常的情況,這里就不一一列舉了,但是它們都有一個共同的特征,那就是對象為null。

            碰到NullPointerException該如何處理?

            其實在實際開發中碰到NullPointerException,我們認為這些都是編程錯誤,應該手動排查錯誤,去修改。也就是說,不建議使用try-catch或者throws,建議手動查找出錯的地方,更正程序代碼。

            好了,最后希望大家能夠在日后的編程過程中少一些異常,多一些收獲,謝謝大家的閱讀。

            總結運行時異常是在Java虛擬機的正常運行期間可以拋出的那些異常。運行時異常就是在應用程序運行期間拋出的異常。檢查的意思就是看你對這些已檢查的異常有沒有進行try-catch或throws處理。已檢查的異常就是應用程序中可以預測和恢復的異常。未檢查的異常就是應用程序中無法預測和恢復的異常。Error及其子類和RuntimeException及其子類都是未檢查的異常。未檢查的異常在編譯時乃至在運行時,都不需要你強制使用try-catch或throws對其處理。RuntimeException是所有運行時異常的父類。實際開發中,我們接觸到最多的未檢查的異常就是RuntimeException及其子類。例如:ClassCastException(類型轉換異常)和NullPointerException(空指針異常)。將對象強制轉換為不是實例的子類就會發生類型轉換異常。當使用的對象為null時就會拋出NullPointerException。其實在實際開發中碰到NullPointerException,我們認為這些都是編程錯誤,應該手動排查錯誤,去修改。也就是說,不建議使用try-catch或者throws,建議手動查找出錯的地方,更正程序代碼。

            至此,Java中運行時異常RuntimeException相關內容講解先告一段落,更多內容請持續關注。

            答疑

            如果大家有問題或想了解更多前沿技術,請在下方留言或評論,我會為大家解答。

            上一章

            “全棧2019”Java異常第十八章:Exception詳解

            下一章

            “全棧2019”Java異常第二十章:自定義異常

            學習小組

            加入同步學習小組,共同交流與進步。

            方式一:關注頭條號Gorhaf,私信“Java學習小組”。方式二:關注公眾號Gorhaf,回復“Java學習小組”。全棧工程師學習計劃

            關注我們,加入“全棧工程師學習計劃”。

            版權聲明

            原創不易,未經允許不得轉載!

            本文發布于:2023-02-28 20:58:00,感謝您對本站的認可!

            本文鏈接:http://m.newhan.cn/zhishi/a/167771184795027.html

            版權聲明:本站內容均來自互聯網,僅供演示用,請勿用于商業和其他非法用途。如果侵犯了您的權益請與我們聯系,我們將在24小時內刪除。

            本文word下載地址:runtimeexception.doc

            本文 PDF 下載地址:runtimeexception.pdf

            相關文章
            留言與評論(共有 0 條評論)
               
            驗證碼:
            Copyright ?2019-2022 Comsenz Inc.Powered by ? 實用文體寫作網旗下知識大全大全欄目是一個全百科類寶庫! 優秀范文|法律文書|專利查詢|
            主站蜘蛛池模板: 国产精品福利午夜久久香蕉 | 国产午夜福利小视频合集| 亚洲熟妇一区二区三个区| 亚洲欧美不卡高清在线| 久久免费偷拍视频有没有| 一出一进一爽一粗一大视频| 一区二区免费视频中文乱码| 亚洲国产成人片在线观看| 国产成人影院一区二区三区| 国产成人精品亚洲高清在线| 国内精品久久久久电影院| 99国产欧美另类久久久精品| 最新亚洲av日韩av二区| 精品无码国产不卡在线观看| 妺妺窝人体色www看美女| 在线观看国产小视频| 久久青草热| 免费看国产精品3a黄的视频| 亚洲一区黄色| 亚洲精品有码在线观看| 国产v综合v亚洲欧美大天堂| 亚洲女同精品一区二区久久| 国产一区二区视频在线| 无码专区—va亚洲v专区vr| 日韩精品一二区在线视频| 国产成人精品久久性色av| 亚洲熟妇乱色一区二区三区| 亚洲人成色4444在线观看| 亚洲av无码一区二区三区网站| 九九热视频免费在线播放| 国产精品一品二区三四区| 国产av第一次处破| 免费高清特级毛片A片| 国产精品亚洲二区在线看| 四虎永久播放地址免费| 色综合久久夜色精品国产| 农村乱色一区二区高清视频| 亚洲一区二区偷拍精品| 亚洲成色精品一二三区| 亚洲人妻系列中文字幕| 亚洲中文久久久精品无码|