• <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

            難度

            初級

            學(xué)習(xí)時間

            30分鐘

            適合人群

            零基礎(chǔ)

            開發(fā)語言

            Java

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

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

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

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

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

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

            本章就來介紹RuntimeException。

            2.運行時異常

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

            那什么是運行時異常呢?

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

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

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

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

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

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

            演示:

            請制造一個運行時異常。

            請觀察程序代碼及結(jié)果。

            代碼:

            Main類:

            結(jié)果:

            我們先不著急看結(jié)果,先看程序代碼:

            大家有什么發(fā)現(xiàn)沒有?

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

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

            3.什么是檢查?

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

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

            4.已檢查的異常

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

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

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

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

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

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

            5.預(yù)測與恢復(fù)

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

            預(yù)測:提前預(yù)知這里將會發(fā)生異常。

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

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

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

            6.未檢查的異常

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

            對照已檢查的異常,未檢查的異常就是應(yīng)用程序中無法預(yù)測和恢復(fù)的異常。

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

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

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

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

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

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

            7.RuntimeException

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

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

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

            RuntimeException繼承自Exception:

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

            我們把注釋去掉再看看:

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

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

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

            將對象強制轉(zhuǎn)換為不是實例的子類就會發(fā)生類型轉(zhuǎn)換異常。

            上面這句話什么意思?

            下面結(jié)合例子來解釋說明。

            演示:

            請制造一個類型轉(zhuǎn)換異常。

            請觀察程序代碼及結(jié)果。

            代碼:

            Main類:

            結(jié)果:

            錯誤信息:

            文字版:

            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)

            我們先來看看程序代碼,首先,我們創(chuàng)建一個變量i:

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

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

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

            就在這時,程序發(fā)生了類型轉(zhuǎn)換異常:

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

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

            我們再來將“將對象強制轉(zhuǎn)換為不是實例的子類就會發(fā)生類型轉(zhuǎn)換異常。”這句話結(jié)合例子來看。

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

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

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

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

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

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

            9.空指針異常NullPointerException

            當(dāng)使用的對象為null時就會拋出NullPointerException。

            例如下面這些情況。

            調(diào)用null對象的實例方法

            代碼:

            結(jié)果:

            訪問或修改null對象的字段

            代碼:

            結(jié)果:

            拋出的異常為null

            代碼:

            結(jié)果:

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

            碰到NullPointerException該如何處理?

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

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

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

            至此,Java中運行時異常RuntimeException相關(guān)內(nèi)容講解先告一段落,更多內(nèi)容請持續(xù)關(guān)注。

            答疑

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

            上一章

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

            下一章

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

            學(xué)習(xí)小組

            加入同步學(xué)習(xí)小組,共同交流與進步。

            方式一:關(guān)注頭條號Gorhaf,私信“Java學(xué)習(xí)小組”。方式二:關(guān)注公眾號Gorhaf,回復(fù)“Java學(xué)習(xí)小組”。全棧工程師學(xué)習(xí)計劃

            關(guān)注我們,加入“全棧工程師學(xué)習(xí)計劃”。

            版權(quán)聲明

            原創(chuàng)不易,未經(jīng)允許不得轉(zhuǎn)載!

            本文發(fā)布于:2023-02-28 20:58:00,感謝您對本站的認(rèn)可!

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

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

            本文word下載地址:runtimeexception.doc

            本文 PDF 下載地址:runtimeexception.pdf

            標(biāo)簽:runtimeexception
            相關(guān)文章
            留言與評論(共有 0 條評論)
               
            驗證碼:
            Copyright ?2019-2022 Comsenz Inc.Powered by ? 實用文體寫作網(wǎng)旗下知識大全大全欄目是一個全百科類寶庫! 優(yōu)秀范文|法律文書|專利查詢|
            主站蜘蛛池模板: 久久天天躁夜夜躁狠狠85 | 狠狠躁夜夜躁人人爽天天5| 亚洲精品无amm毛片| 亚洲免费成人av一区| 亚洲少妇色图在线观看| 亚洲熟妇自偷自拍另欧美| 性欧美VIDEOFREE高清大喷水| 忘忧草在线社区www中国中文| 无码 人妻 在线 视频| 国产资源精品中文字幕| 四虎www永久在线精品| 国产一区二区三区AV在线无码观看| 99久久精品美女高潮喷水| 免费看又黄又无码的网站| 在线无码免费看黄网站| 亚洲人成人日韩中文字幕| 中文字幕久久六月色综合| 人妻少妇精品中文字幕| 久久香蕉国产线看观看亚洲片| 精品国产午夜福利在线观看| 国产一卡2卡3卡4卡网站精品| 亚洲日韩欧美在线观看| 成人午夜在线观看日韩| 亚洲高清乱码午夜电影网 | av无码精品一区二区乱子| 蜜臀av久久国产午夜| 四房播色| 无套内射视频囯产| 国产精品天干天干综合网| 亚洲国产精品13p| 亚洲国产成人精品女人久| 亚洲中文一区二区av| 亚洲综合国产成人丁香五| 国产一区二区三区不卡在线看| 日韩精品久久久肉伦网站| 亚洲中文字幕乱码电影| 国产精品极品美女免费观看| 老太脱裤子让老头玩xxxxx| 超碰国产精品久久国产精品99| 国厂精品114福利电影免费| 国产精品自在在线午夜区app|