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

Java try-catch-finally異常處理機制詳解

 更新時間:2021年08月11日 09:36:00   作者:StarHai  
這篇文章主要介紹了Java try-catch-finally異常處理機制詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下

Java中的try-catch-finally異常處理

一、異常處理

異常(Exception):是在運行發(fā)生的不正常情況。

原始異常處理:

if(條件)
{
  處理辦法1
  處理辦法2
  處理辦法3
}
if(條件)
{
  處理辦法4
  處理辦法5
  處理辦法6
}

  代碼閱讀性差,臃腫不堪,與正常流程代碼結(jié)合的很緊密,所以,在JAVA中進行一系列的改良,將一系列常見的問題,用面向?qū)ο蟮乃伎挤绞剑瑢ζ溥M行了描述、封裝。

class 處理辦法
{
    處理辦法1()
    {
    舉例1
    }
    處理辦法2()
    {
    舉例2
    }
}
if(出錯了)
{
  拋出 new 處理辦法1();此方法可能包含問題的名稱,信息,時間,地點等。
}

在JAVA中,用類的形式對不正常情況進行了描述和封裝對象。當(dāng)程序出現(xiàn)問題時,調(diào)用相應(yīng)的處理辦法。

描述不正常情況的類,就稱為異常類。將流程代碼和異常代碼進行分離。

異常就是JAVA通過面向?qū)ο蟮乃枷?,將問題封裝成了對象。用異常類對其進行描述。不同的問題,用不同的類進行描述。那么意味著,問題有多少,類就有多少。

二、異常體系

問題很多,意味著描述的類也很多,將其共性進行向上抽取,就形成了異常體系。最終異常分為兩大類

Throwable(父類):問題發(fā)生,就應(yīng)該拋出,讓調(diào)用者處理。該體系的特點就在于Throwable及其子類都具有可拋性。

  兩個關(guān)鍵字實現(xiàn)可拋性:throws、throw

1.一般不可處理的。Error(錯誤)

  特點:是由JVM(java虛擬機)拋出的嚴重性的問題。這種問題發(fā)生,一般不針對性處理,直接修改程序。

2.可以處理的。Exception(異常)

  特點:子類的后綴名都是用其父類名作為后綴,閱讀性很強。

三、異常-原理&異常對象的拋出throw

public static void main(String [] args)
{
    代碼塊  throw new 異常方法();
}
throw為關(guān)鍵字,專門用于拋出異常動作。
  
定義中文異常信息(舉個例子):
throw new 異常方法(異常的方法一般里面可以放入String類型的字符串的,在這里寫上中文提示就OK了);

可以看出,異常時,底層throw直接調(diào)用異常方法,拋出異常,只不過這些都在底層完成,我們看不到而已。

JAVA虛擬機它有一套異常處理機制,就是會把異常的各種信息,位置等報出來,以供解決異常。

真正開發(fā)的時候,這些異常信息是不會直接報出來的,會存成日志,我們定期查看。而且這個異常信息給用戶也沒用,只有給我們才有用。

四、異常-自定義異常&異常類的拋出throws

自定義異常:JAVA給出的一堆現(xiàn)有的異常沒有我們需要的,這時候可以自定義了。但是這個類一定要繼承Exception類。

這是自定義的異常,需要繼承Exception類
class Demo extends Exception
{
    異常的構(gòu)造方法嘛
    Demo()
    {
    }
    Demo(int a)
    {
    super(a);這是Throwable父類寫好的方法,Exception繼承的是Throwable父類
    }
     Demo(String b)
    {
    super(b);
    }
}
  
class Demo1
{
    public static void main(String [] args) throws Demo   注意這里是throws拋出,要在方法上聲明異常,直接后邊寫就行
    {
    throw new Demo(這里寫上你的中文異常提示);
    }
}

五、異常-編譯時檢測異常和運行時異常的區(qū)別&throw和throws的區(qū)別

Exception體系分兩種:1.一種是編譯時被檢測異常(throws)。除runtimeException子類的所有子類。這樣的問題可以針對性的處理。

2.運行時異常(throw)。Exception的子類中runtimeException和其子類。這種問題一般不處理,直接編譯通過,在運行時讓調(diào)用時的程序強制停止。

六、異常-異常捕捉try-catch

異常處理的捕捉形式:具體格式:

try嘗試
{
  需要被檢測異常的代碼
  不要啥玩意都往try里放,不需要檢測的不用放
}
catch(異常類 變量)-這個變量專門接收當(dāng)前發(fā)生異常的對象
{
  處理異常的代碼,問題解決了,程序繼續(xù)運行
}
finally最終化
{
  一定會被執(zhí)行的代碼
}

七、異常-多catch情況

try嘗試
{
  需要被檢測異常的代碼
}
catch(異常類 變量)
{
  處理異常的代碼
}
catch(異常類 變量)
{
  處理異常的代碼
}
finally最終化
{
  一定會被執(zhí)行的代碼
}

一個try對應(yīng)多個catch的時候,小細節(jié):

當(dāng)多catch需要存在catch(Exception e)的時候,需要放到最后,不然會掛,因為Exception為父類,能接收所有的異常,放它之后,其他的就多余了,所以,它要放在最后的catch。

八、異常-異常處理原則

異常就是問題,JAVA對一些常見的問題已經(jīng)弄好了,拿來用就好了。

如果,個別問題只在你自己的項目里出現(xiàn),并且JAVA里沒有這類問題,那就需要自己描述該問題。

  1. 方法內(nèi)如果拋出需要檢測的異常,那么方法上必須要聲明,否則必須在方法內(nèi)用try-catch捕捉,否則編譯失敗。
  2. 如果調(diào)用了聲明異常的函數(shù),要么try-catch要么throws,否則編譯失敗。
  3. 什么時候catch,什么時候throws?功能內(nèi)容可以解決,用catch,解決不了,用throws告訴調(diào)用者,有調(diào)用者解決。
  4. 如果一個功能拋出了多個異常,那么調(diào)用時必須有對應(yīng)多個catch進行針對性的處理。

九、異常-finally代碼塊

finally為一定會執(zhí)行的代碼,只有一種情況,finally不會執(zhí)行。

try
{
檢測代碼
}
catch
{
  return; 退出整個方法,但finally依舊執(zhí)行。
  System.exit(0);退出java虛擬機,只有這種情況finally不會執(zhí)行。
}
finally  通常用于關(guān)閉(釋放)資源
{
  除退出虛擬機一種情況外,不管咋地,都會執(zhí)行。
}
System.out.println("catch中寫有return,finally外的代碼將不會執(zhí)行,確切的說,就是直接退出了整個方法");

try-catch-finally代碼塊組合特點:

  1. try-catch-finally常見組合體
  2. try-catch(可以多個catch)沒有finally,沒有資源需要釋放(關(guān)閉),可以不用finally。
  3. try-finally,沒有catch時,方法旁邊需要throws聲明,因為沒catch沒處理。異常無法直接catch處理,但是資源需要關(guān)閉,這時用此組合。

十、異常的注意事項

  1. 子類在覆蓋父類方法時,父類的方法如果拋出了異常,那么子類的方法只能拋出父類的異常或者該異常的子類。
  2. 如果父類拋出多個異常,那么子類只能拋出父類異常的子集。----子類覆蓋父類只能拋出父類異?;蛘咦宇惢蛘咦蛹H绻割惖姆椒]有拋出異常,那么子類覆蓋時絕對不能拋,只能try。

常用異常方法:

Error類的常見子類:

 Exception類的常見子類:

RuntimeException類的常見的子類:

到此這篇關(guān)于Java try-catch-finally異常處理機制詳解的文章就介紹到這了,更多相關(guān)Java try-catch-finally異常處理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺談hibernate中懶加載禁用操作

    淺談hibernate中懶加載禁用操作

    這篇文章主要介紹了淺談hibernate中懶加載禁用操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • Java實現(xiàn)可配置換膚的方法示例

    Java實現(xiàn)可配置換膚的方法示例

    本文主要介紹了Java實現(xiàn)可配置換膚的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • java HashMap,TreeMap與LinkedHashMap的詳解

    java HashMap,TreeMap與LinkedHashMap的詳解

    這篇文章主要介紹了 java HashMap,TreeMap與LinkedHashMap的詳解的相關(guān)資料,這里提供實例代碼,幫助大家學(xué)習(xí)理解 這部分的內(nèi)容,需要的朋友可以參考下
    2016-11-11
  • AJAX中Get請求報錯404的原因以及解決辦法

    AJAX中Get請求報錯404的原因以及解決辦法

    剛學(xué)習(xí)一門技術(shù)時總會踩一些坑,下面這篇文章主要給大家介紹了關(guān)于AJAX中Get請求報錯404的原因及解決辦法的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-03-03
  • 在Java和PostgreSQL枚舉之間轉(zhuǎn)換的通用方法

    在Java和PostgreSQL枚舉之間轉(zhuǎn)換的通用方法

    枚舉類型(enum)是一種方便的數(shù)據(jù)類型,允許我們指定一個常量列表,對象字段或數(shù)據(jù)庫列可以設(shè)置為該列表中的值,在本文中,我將回顧處理Java和PostgreSQL枚舉轉(zhuǎn)換的通用方法,需要的朋友可以參考下
    2023-10-10
  • java運行windows的cmd命令簡單代碼

    java運行windows的cmd命令簡單代碼

    這篇文章主要介紹了java運行windows的cmd命令簡單代碼,有需要的朋友可以參考一下
    2013-12-12
  • 如何查看java進程內(nèi)存占用情況

    如何查看java進程內(nèi)存占用情況

    這篇文章主要介紹了如何查看java進程內(nèi)存占用情況問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Springboot詳解實現(xiàn)食品倉庫管理系統(tǒng)流程

    Springboot詳解實現(xiàn)食品倉庫管理系統(tǒng)流程

    這是一個使用Springboot開發(fā)的食品倉庫管理系統(tǒng),是為商家提供商品貨物進銷存的信息化管理系統(tǒng),具有一個倉庫管理系統(tǒng)該有的所有功能,感興趣的朋友快來看看吧
    2022-06-06
  • Spring Boot 啟動流程解析

    Spring Boot 啟動流程解析

    Spring Boot 是一個簡化的 Spring 應(yīng)用開發(fā)框架,它以 “約定優(yōu)于配置” 的理念,為開發(fā)者提供了開箱即用的功能,本文將詳細剖析其內(nèi)部實現(xiàn),幫助你深入理解 Spring Boot 的啟動機制,感興趣的朋友跟隨小編一起看看吧
    2024-12-12
  • java實現(xiàn)背單詞程序

    java實現(xiàn)背單詞程序

    這篇文章主要為大家詳細介紹了java實現(xiàn)背單詞程序,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07

最新評論

南城县| 五指山市| 彰化县| 丹棱县| 新源县| 阿拉善右旗| 阿瓦提县| 秦皇岛市| 湖口县| 安福县| 滕州市| 汤阴县| 建德市| 泰兴市| 宁河县| 沧源| 寿阳县| 清涧县| 来凤县| 皋兰县| 昭觉县| 宁远县| 安远县| 丹凤县| 罗山县| 循化| 错那县| 奎屯市| 龙口市| 若尔盖县| 苍南县| 天等县| 房产| 井研县| 三河市| 永德县| 响水县| 阿勒泰市| 黄浦区| 盐边县| 阜新|