国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

java基礎(chǔ)知識——25.異常

這篇具有很好參考價值的文章主要介紹了java基礎(chǔ)知識——25.異常。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

這篇文章,我們來講一下java的異常體系

目錄

1.異常概述

2 java的異常繼承體系

2.1 編譯時異常

2.2 運行時異常

2.3 底層原理

2.4 異常的作用

3.異常的處理方式

3.1 JVM默認的處理方式

3.2 自己處理(捕獲異常)

3.2.1自己處理的4個問題

3.2.2 異常中的常見方法

3.3 拋出處理

3.3.1 throws

3.3.2 throw

4.小結(jié)


1.異常概述

首先,我們來認識一下異常

異常:異常就是代表程序出現(xiàn)的問題

注意:我們學(xué)習異常不是讓我們以后寫代碼不出現(xiàn)異常,而是程序出了異常之后,我們應(yīng)該如何處理

下面舉個例子,來看一下異常:

java基礎(chǔ)知識——25.異常

?java中有許多異常,上面舉的只是兩個簡單的例子而已

2 java的異常繼承體系

java中有許許多多的異常,這些異常組成了java的異常體系,下面來看一下:

java基礎(chǔ)知識——25.異常

下面來詳細的說一下各個部分

  • Error:代表的系統(tǒng)級別錯誤(屬于嚴重問題)系統(tǒng)一旦出現(xiàn)問題,sun公司會把這些錯誤封裝成Error對象。Error是給sun公司自己用的,不是給我們程序員用的。因此,我們開發(fā)人員不用管它
  • Exception:叫做異常,代表程序可能出現(xiàn)的問題。我們通常會用Exception以及它的子類來封裝程序出現(xiàn)的問題
  • 運行時異常:RuntimeException及其子類,編譯階段不會出現(xiàn)異常提醒。運行時出現(xiàn)的異常(如:數(shù)組索引越界異常)
  • 編譯時異常:編譯階段就會出現(xiàn)異常提醒(如日期解析異常)

?注意:異常體系的最上層父類是Exception,而不是java.lang.Throwable

2.1 編譯時異常

編譯時異常,就是我們在寫代碼時,不運行就會出現(xiàn)的錯誤,idea中會用紅色波浪線標記出來,如果我們不出來,則代碼運行不了。

下面,我們通過具體的實例來看一下:

java基礎(chǔ)知識——25.異常

如上圖所示,這就是編譯時異常,我們可以進行相應(yīng)的異常處理:

java基礎(chǔ)知識——25.異常

然后就可以正常運行了:

java基礎(chǔ)知識——25.異常

?編譯時異常是很好解決,我們可以直接在主方法上拋出異常就行

2.2 運行時異常

運行時異常就是RuntimeException及其子類,在編譯階段不會是出現(xiàn)異常提醒的。它運行時出現(xiàn)的異常(如:數(shù)組索引越界異常)

?下面還是通過具體實例來看一下:

java基礎(chǔ)知識——25.異常

然后,我們運行看一下:

java基礎(chǔ)知識——25.異常

就會出現(xiàn)紅色錯誤,然后指出錯誤類型,指出具體位置

這就是運行時異常。

2.3 底層原理

?下面,我們來看一下為什么會出現(xiàn)編譯異常和運行時異常兩種異常

java基礎(chǔ)知識——25.異常

而我們的編譯器在編譯階段,java是不會運行代碼的,它只會檢查語法是否有錯誤,或者做一些優(yōu)化,所以就會出現(xiàn)這兩種異常

2.4 異常的作用

下面,講一下異常的作用

作用一:異常是用來查詢bug的關(guān)鍵參考信息

作用二:異??梢宰鳛榉椒▋?nèi)部的一種特殊返回值,以便通知調(diào)用者底層的執(zhí)行情況

這里就不舉具體例子了

3.異常的處理方式

上面講了異常的概念,異常體系,下面我們來講一下異常的處理方式

異常的處理方式有三種,分別是:JVM默認的處理方式,自己處理,拋出異常

3.1 JVM默認的處理方式

當我們的代碼中有異常的時候,如果我們沒有自己處理,沒有拋出異常,那么就會采用JVM的默認處理方式來處理

JVM的默認處理方式是這樣的:

  • 把異常的名稱,異常原因以及異常出現(xiàn)的位置等信息輸出在了控制臺
  • 程序停止運行,下面的代碼就不會運行

下面看一下具體實例:

java基礎(chǔ)知識——25.異常

java基礎(chǔ)知識——25.異常

3.2 自己處理(捕獲異常)

下面我們來看一下異常處理的第二種方式:自己處理

它的格式如下:

try{
    可能出現(xiàn)異常的代碼;
}catch(異常類 異常名){
    異常的處理代碼;
}

?這樣的目的:當代碼出現(xiàn)異常時,可以讓程序繼續(xù)往下運行

下面通過具體實例來看一下:

java基礎(chǔ)知識——25.異常

再看一下結(jié)果:

java基礎(chǔ)知識——25.異常?

下面,我們就上面的這個代碼,來分析一下它的具體執(zhí)行過程

首先,程序進入到 try 里面,執(zhí)行try里面的代碼,如果出現(xiàn)了異常,它就會創(chuàng)建出相應(yīng)的異常類對象,比如我們這里出的是索引越界異常,也就是ArrayIndexOutOfBoundsException異常,所以它就會創(chuàng)建一個ArrayIndexOutOfBoundsException異常對象,然后拿著這個對象到catch的小括號中進行比較,看括號中的變量能否接收這個對象(Exception是所有異常的父類),如果可以接收,那么就執(zhí)行catch里面的代碼,如果不可以接收,就會在編譯時報錯。這就是它的執(zhí)行流程。

3.2.1自己處理的4個問題

下面,關(guān)于自己處理異常這種方式,或者說try?{ } catch( ) { } 這個方式,提幾個問題。

問題一:如果try中沒有遇到問題,怎么執(zhí)行?

答:執(zhí)行try中的代碼,catch中的代碼不執(zhí)行

注意:只有出現(xiàn)異常,才會執(zhí)行catch中的代碼

看實例:

java基礎(chǔ)知識——25.異常

java基礎(chǔ)知識——25.異常?

問題二:如果try中可能會遇到多個問題,怎么執(zhí)行?

答:但凡try中出現(xiàn)異常,并且異常被捕獲,那么就會執(zhí)行catch,然后繼續(xù)執(zhí)行下面的代碼,不會管其他的異常

注意:try中但凡出現(xiàn)一個異常,就會跳過try的部分

看實例:

java基礎(chǔ)知識——25.異常

java基礎(chǔ)知識——25.異常?

?

問題三:如果try中遇到的問題沒有被捕獲,怎么執(zhí)行?

答:那么程序會報錯,以紅色字體將錯誤打印在控制臺,并且下面的代碼不會繼續(xù)執(zhí)行

看實例:

java基礎(chǔ)知識——25.異常

java基礎(chǔ)知識——25.異常?

問題四:如果try中遇到了問題,那么try下面的其他代碼還會執(zhí)行嗎?

答:不會繼續(xù)執(zhí)行

注意:這種情況就相當于try白寫了,異常就會交給JVM默認處理

看實例:

java基礎(chǔ)知識——25.異常

java基礎(chǔ)知識——25.異常

3.2.2 異常中的常見方法

在上面的案例中,當我們自己捕獲到異常時,我們會定義一個異常類的對象e,然后在catch里面隨意寫點東西,這只是為了演示方便才這樣做的。其實異常類里面有許多方法,下面就介紹幾個常用的方法:

java基礎(chǔ)知識——25.異常

這些方法我們都可以通過異常類對象e來調(diào)用,下面演示一個案例:

java基礎(chǔ)知識——25.異常?java基礎(chǔ)知識——25.異常

3.3 拋出處理

拋出處理就是自己手動寫拋出語句,將異常拋出。

拋出處理涉及到2個關(guān)鍵字,分別是 throws,throw;下面分別來看一下

3.3.1 throws

throws:寫在方法的定義處,表示聲明一個異常,作用是告訴調(diào)用者,使用本方法可能會出現(xiàn)哪些異常

注意:編譯時的異常必須要寫,運行時異??梢圆粚?/p>

格式如下:

public void 方法() throws 異常類名1,異常類名2……{

}

下面看一下具體實例:

java基礎(chǔ)知識——25.異常

java基礎(chǔ)知識——25.異常

因為沒做其他處理,所以就是默認的輸出這個異常?

3.3.2 throw

throw:寫在方法內(nèi),結(jié)束方法,它是手動拋出異常對象,交給調(diào)用者,方法下面的代碼不再執(zhí)行了

格式如下:

public void 方法{
    throw new 異常類名();
}

下面看一下具體實例:

java基礎(chǔ)知識——25.異常

java基礎(chǔ)知識——25.異常?

4.小結(jié)

這篇文章我們講了一下異常。介紹了什么是異常,java的異常體系結(jié)構(gòu),和對異常的三種處理方法。都比較重要,都需要掌握。其實內(nèi)容很簡單,就是出錯了,捕獲它,匹配它,處理它,然后繼續(xù)執(zhí)行后面的代碼。一般的處理方式就是輸出打印它。文章來源地址http://www.zghlxwxcb.cn/news/detail-430313.html

到了這里,關(guān)于java基礎(chǔ)知識——25.異常的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Python常用基礎(chǔ)語法知識點大全合集,看完這一篇文章就夠了

    Python 是一門獨特的語言,快速瀏覽一下他的要點: 面向?qū)ο螅好恳粋€變量都是一個類,有其自己的屬性(attribute)與方法(method)。 語法塊:用縮進(四個空格)而不是分號、花括號等符號來標記。因此,行首的空格不能隨意書寫。 注釋:行內(nèi)用“#”號,行間注釋寫在兩

    2023年04月22日
    瀏覽(32)
  • 【MySQL速通篇004】這可能最詳細的關(guān)于MySQL基礎(chǔ)知識點的文章了

    【MySQL速通篇004】這可能最詳細的關(guān)于MySQL基礎(chǔ)知識點的文章了

    ? ?? 作 者 主 頁 : CSDN丨博客園 ?? 學(xué) 習 交 流: 在下周周ovoの社區(qū) ?? 這篇8000多字的博客也是花了我比較久的時間,基本覆蓋很大一部分的MySQL知識點,可以說是非常的詳細,感謝各位的支持,對于文章中的一些語法,概念,例子等錯誤,歡迎并感謝各位讀者的指出 文

    2024年02月05日
    瀏覽(73)
  • Python入門教程:掌握for循環(huán)、while循環(huán)、字符串操作、文件讀寫與異常處理等基礎(chǔ)知識

    Python入門教程:掌握for循環(huán)、while循環(huán)、字符串操作、文件讀寫與異常處理等基礎(chǔ)知識

    在 Python 中,for 循環(huán)用于遍歷序列(list、tuple、range 對象等)或其他可迭代對象。for 循環(huán)的基本語法如下: 其中, 變量 表示每次循環(huán)中取出的一個元素, 可迭代對象 表示被遍歷的對象。下面是一個 for 循環(huán)的例子: 輸出結(jié)果為: 代碼中, fruits 是一個列表, fruit 是當前循

    2024年02月10日
    瀏覽(25)
  • 【數(shù)字IC精品文章收錄】近500篇文章|學(xué)習路線|基礎(chǔ)知識|接口|總線|腳本語言|芯片求職|安全|EDA|工具|低功耗設(shè)計|Verilog|低功耗|STA|設(shè)計|驗證|FPGA|架構(gòu)|AMBA|書籍|

    1.1 索引目的 本篇索引旨在 收藏CSDN全站中有關(guān)數(shù)字IC領(lǐng)域高價值文章 ,在數(shù)字芯片領(lǐng)域中,就算將架構(gòu),設(shè)計,驗證,DFT,后端諸多崗位加在一起的數(shù)量,都不及軟件類一個細分方向的崗位數(shù)量多,反映在社區(qū)氛圍或是開源資料的豐富度而言,數(shù)字IC領(lǐng)域相較于軟件/互聯(lián)網(wǎng)領(lǐng)

    2024年02月03日
    瀏覽(30)
  • python:基礎(chǔ)知識—流程控制—函數(shù)與模塊—數(shù)據(jù)結(jié)構(gòu)—類與GUI和Turtle—異常處理與文件,概括全書(上萬字最詳細版)

    python:基礎(chǔ)知識—流程控制—函數(shù)與模塊—數(shù)據(jù)結(jié)構(gòu)—類與GUI和Turtle—異常處理與文件,概括全書(上萬字最詳細版)

    這里是一張夜景,給大家放松一下。 !!無錫南長街 python是一門同時支持 面向過程 與 面向?qū)ο?的高級語言,由于開放源碼的特性,具有 移植性好,可跨平臺,具有豐富的第三方庫 。擴展名名為 .py 。 python中常見的數(shù)字有三種類型·:整數(shù)( integer ),浮點數(shù)( float ),與

    2024年02月09日
    瀏覽(22)
  • Java入門基礎(chǔ)知識

    Java入門基礎(chǔ)知識

    JDK是Java工具開發(fā)包,包含了JVM(程序運行環(huán)境),核心類庫(直接應(yīng)用即可),開發(fā)工具(Javac,java,jdb,jhat…) JRE是Java運行環(huán)境,包含了JVM,核心類庫,運行工具 JDK包含了JRE,JRE包含了jvm 全部小寫(有特定含義的英文字符) class 表示一個類 整數(shù)類型 小數(shù)類型 字符串類型 :只用\\\"雙引

    2024年02月09日
    瀏覽(92)
  • java基礎(chǔ)知識

    java基礎(chǔ)知識

    java的數(shù)據(jù)結(jié)構(gòu)有哪些? 線性結(jié)構(gòu):數(shù)組、鏈表、哈希表;隊列、棧 非線性結(jié)構(gòu)有:堆、樹(二叉樹、B樹、B+樹、紅黑樹) 圖 常用的集合類有List集合,Set集合,Map集合,其中List集合與Set集合繼承了Collection接口, List 有序可重復(fù)的集合接口,繼承自Collection接口,表示元素按照插入順

    2024年02月06日
    瀏覽(99)
  • java基礎(chǔ)知識梳理

    雖然已經(jīng)在實際工作中與java打交道5年之多,但是一直沒系統(tǒng)地對java這門語言進行梳理和總結(jié),掌握的知識也比較零散。恰好利用這段時間重新認識下java,并對一些常見的語法和知識點做個總結(jié)與回顧,一方面為了加深印象,方便后面查閱,一方面為了學(xué)好java打下基礎(chǔ)。拉

    2024年02月04日
    瀏覽(103)
  • java基礎(chǔ)知識二

    1.1、基本概念 類是具有相同屬性和行為的一組對象的 集合 ,包含數(shù)據(jù)和操作,數(shù)據(jù)被稱為 成員變量 ,操作被稱為方法 對象是類的實例,即 對象 = 數(shù)據(jù) + 行為 或者 對象 = 狀態(tài) + 操作 類抽象的、概念上的定義,對象是一個具體的、實際存在的個體,即一個實例 1.2、類的特

    2024年02月07日
    瀏覽(97)
  • Java ---基礎(chǔ)知識& 期末復(fù)習

    Java ---基礎(chǔ)知識& 期末復(fù)習

    1.Java是低級語言還是 高級語言 ?? 答:高級語言。 2.Java是面向?qū)ο蟮某绦蛟O(shè)計語言嗎 答:是。 3. Java是編譯型的計算機語言還是解釋型的計算機語言。 答: 一種說法:Java是編譯型的。因為所有的Java代碼都是要編譯的,.java不經(jīng)過編譯就無法執(zhí)行。 另一種說法:Java是解釋型

    2024年01月16日
    瀏覽(87)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包