欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java對(duì)異常的認(rèn)識(shí)與異常的處理小結(jié)

 更新時(shí)間:2025年06月13日 12:03:33   作者:KaitoKur  
Java程序在運(yùn)行時(shí)可能出現(xiàn)的錯(cuò)誤或非正常情況稱為異常,下面給大家介紹Java對(duì)異常的認(rèn)識(shí)與異常的處理,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧

一、認(rèn)識(shí)異常與異常類型。

(1)簡(jiǎn)單定義-什么是異常?

  • Java程序在運(yùn)行時(shí)可能出現(xiàn)的錯(cuò)誤或非正常情況。

(2)常見比喻

  • 程序運(yùn)行的"安全氣囊"
  • 代碼世界里的"急救系統(tǒng)"

(3)異常類型

  • 編譯時(shí)異常:在Exception類中,除了RuntimeException類以外,其他子類都是編譯時(shí)異常。Java編譯器會(huì)對(duì)編譯時(shí)異常進(jìn)行檢查,如果出現(xiàn)這類異常就必須對(duì)其進(jìn)行處理,否則程序就無法通過編譯。
  • 運(yùn)行時(shí)異常RuntimeException類及其子類都是運(yùn)行時(shí)異常。運(yùn)行時(shí)異常是在程序運(yùn)行時(shí)由Java虛擬機(jī)自動(dòng)進(jìn)行捕獲處理的,Java編譯器不會(huì)對(duì)異常進(jìn)行檢查。也就是說,當(dāng)程序中出現(xiàn)這類異常時(shí),即使沒有使用try···catch語句捕獲異?;蚴褂胻hrows關(guān)鍵字聲明拋出異常,程序也能編譯通過,只是程序在運(yùn)行過程中可能報(bào)錯(cuò)。
  • Error:系統(tǒng)級(jí)別錯(cuò)誤,程序無法處理(如內(nèi)存溢出)。

   (4)  異常體系圖 

Throwable
├── Error(系統(tǒng)錯(cuò)誤,如OutOfMemoryError)
└── Exception
    ├── RuntimeException(運(yùn)行時(shí)異常/非受檢查異常)
    │   ├── ArithmeticException
    │   ├── NullPointerException
    │   ├── ArrayIndexOutOfBoundsException
    │   └── ...
    └── 其他(編譯時(shí)異常/受檢查異常)
        ├── IOException
        ├── SQLException
        ├── ClassNotFoundException
        └── ...

二、異常的處理

  (1)try-catch-finally 基本結(jié)構(gòu)

try {
    // 可能拋出異常的代碼
} catch (ExceptionType1 e) {
    // 處理ExceptionType1類型的異常
} catch (ExceptionType2 e) {
    // 處理ExceptionType2類型的異常
} finally {
    // 無論是否發(fā)生異常都會(huì)執(zhí)行的代碼
    // 常用于資源釋放
}
       多重catch塊注意事項(xiàng)
  • 子類異常必須寫在父類異常前面

  • 捕獲異常后程序會(huì)繼續(xù)執(zhí)行

 finally塊的特點(diǎn)
  • 無論是否發(fā)生異常都會(huì)執(zhí)行

  • 即使try或catch中有return語句,finally也會(huì)執(zhí)行

  • 唯一不執(zhí)行finally的情況:System.exit()

小結(jié)
  • try:劃定"危險(xiǎn)區(qū)",包裹可能出錯(cuò)的代碼
  • catch:設(shè)置"急救站",捕獲并處理特定異常
  • finally:建立"清理隊(duì)",確保必須執(zhí)行的收尾工作

(2)throws關(guān)鍵字  當(dāng)方法內(nèi)部不處理異常時(shí),可以使用throws聲明拋出

用于方法聲明,表示該方法可能拋出異常但不處理

public void readFile() throws IOException {
    // 方法代碼
}

(3)throw關(guān)鍵字  

使用throw手動(dòng)觸發(fā)異常

主動(dòng)拋出異常對(duì)象

if (age < 0) {
    throw new IllegalArgumentException("年齡不能為負(fù)數(shù)");
}

(4)自定義異常 

通過繼承Exception或RuntimeException創(chuàng)建

class MyException extends Exception {
    public MyException(String message) {
        super(message);
    }
}

(5)異常處理注意事項(xiàng)

  • 針對(duì)性處理:不要捕獲所有異常(避免直接catch Exception)
  • 不要吞掉異常:注意空的catch塊 

三、總結(jié) 

  • 異常是 Java 程序運(yùn)行時(shí)可能出現(xiàn)的錯(cuò)誤或非正常情況,分為可處理的Exception和不可控的Error。
  • 類比現(xiàn)實(shí)中的 “安全氣囊” 或 “急救系統(tǒng)”,用于在程序出錯(cuò)時(shí)攔截問題并處理,避免程序崩潰。
  • 合理的異常處理能讓程序在出錯(cuò)時(shí)優(yōu)雅降級(jí)(如提示用戶、記錄日志、重試機(jī)制),而非直接崩潰。
  • 避免在finally塊中編寫復(fù)雜邏輯或拋出新異常,可能導(dǎo)致原有異常被覆蓋。
  • 通過理解異常機(jī)制并遵循最佳實(shí)踐,可顯著提升代碼的健壯性和可維護(hù)性,讓程序在 “意外”面前更可靠。

相關(guān)文章

  • SpringBoot數(shù)據(jù)脫敏的實(shí)現(xiàn)示例

    SpringBoot數(shù)據(jù)脫敏的實(shí)現(xiàn)示例

    數(shù)據(jù)脫敏主要應(yīng)用在客戶安全數(shù)據(jù)或商業(yè)性敏感數(shù)據(jù)的情況,本文主要介紹了SpringBoot數(shù)據(jù)脫敏的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-05-05
  • 詳解java操作Redis數(shù)據(jù)庫的redis工具(RedisUtil,jedis工具JedisUtil,JedisPoolUtil)

    詳解java操作Redis數(shù)據(jù)庫的redis工具(RedisUtil,jedis工具JedisUtil,JedisPoo

    這篇文章主要介紹了java操作Redis數(shù)據(jù)庫的redis工具,包括RedisUtil,jedis工具JedisUtil,JedisPoolUtil工具,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2021-08-08
  • IDEA中查看類繼承圖和類源碼的騷操作

    IDEA中查看類繼承圖和類源碼的騷操作

    這篇文章主要介紹了IDEA中查看類繼承圖和類源碼的騷操作,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • 基于Java實(shí)現(xiàn)二維碼的生成和解析

    基于Java實(shí)現(xiàn)二維碼的生成和解析

    二維碼其實(shí)就是一種編碼技術(shù),只是這種編碼技術(shù)是用在圖片上了,將給定的一些文字,數(shù)字轉(zhuǎn)換為一張經(jīng)過特定編碼的圖片。本文將利用Java實(shí)現(xiàn)二維碼的生成和解析,需要的可以參考一下
    2022-08-08
  • Java 單鏈表數(shù)據(jù)結(jié)構(gòu)的增刪改查教程

    Java 單鏈表數(shù)據(jù)結(jié)構(gòu)的增刪改查教程

    這篇文章主要介紹了Java 單鏈表數(shù)據(jù)結(jié)構(gòu)的增刪改查教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • 前端和后端時(shí)間不一致問題解決的實(shí)踐指南

    前端和后端時(shí)間不一致問題解決的實(shí)踐指南

    這篇文章主要給大家介紹了關(guān)于前端和后端時(shí)間不一致問題解決的實(shí)踐指南,在SpringBoot項(xiàng)目中,可以通過設(shè)置application.yml文件中的屬性來統(tǒng)一時(shí)間格式和時(shí)區(qū),從而確保序列化和反序列化過程中的時(shí)間和時(shí)區(qū)一致性,需要的朋友可以參考下
    2025-01-01
  • Java?SpringBoot核心源碼詳解

    Java?SpringBoot核心源碼詳解

    這篇文章主要為大家介紹了Java?SpringBoot核心源碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12
  • springboot短信驗(yàn)證碼登錄功能的實(shí)現(xiàn)

    springboot短信驗(yàn)證碼登錄功能的實(shí)現(xiàn)

    這篇文章主要介紹了springboot短信驗(yàn)證碼登錄功能的實(shí)現(xiàn),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • Java反射(Class類,Class對(duì)象獲取)

    Java反射(Class類,Class對(duì)象獲取)

    下面是對(duì)Java反射機(jī)制是在程序的運(yùn)行過程中,Java語言的反射機(jī)制的超詳細(xì)解說,點(diǎn)進(jìn)來的小伙伴不要錯(cuò)過奧
    2021-08-08
  • Java編程關(guān)于子類重寫父類方法問題的理解

    Java編程關(guān)于子類重寫父類方法問題的理解

    這篇文章主要介紹了Java編程關(guān)于子類重寫父類方法問題的理解,分享了有關(guān)子類重寫父類的實(shí)例,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11

最新評(píng)論