400-650-7353
您所在的位置:首頁(yè) > IT干貨資料 > java > 【Java基礎(chǔ)知識(shí)】java自定義異常怎么使用

【Java基礎(chǔ)知識(shí)】java自定義異常怎么使用

  • 發(fā)布: java培訓(xùn)
  • 來(lái)源:Java培訓(xùn)干貨資料
  • 2020-03-11 16:29:00
  • 閱讀()
  • 分享
  • 手機(jī)端入口

Java為我們定義了非常多的異常處理,當(dāng)程序運(yùn)行出現(xiàn)問(wèn)題之后,Java會(huì)將異常信息打印出來(lái),我們可以很直觀的看到問(wèn)題的源頭和原因,但是在我們開發(fā)中,會(huì)遇到各式各樣的問(wèn)題,Java原有定義的異常經(jīng)常會(huì)不滿足我們的使用,這時(shí)候我們就可以自定義一些異常,當(dāng)程序運(yùn)行過(guò)程中出現(xiàn)某些情況的時(shí)候,可以將我們自定義的異常拋出,自定義的異常信息中可以包含我們當(dāng)前所遇到的情況詳情,這樣我們就可以很明確的知道了那塊發(fā)生了什么問(wèn)題或者知道那塊不滿足我們的預(yù)期要求。

自定義的異常類和普通類一樣,只要繼承于Exception或者Exception子類即可,我們可以在自定義的類里面重寫構(gòu)造函數(shù),函數(shù)的參數(shù)為錯(cuò)誤的原因,并且調(diào)用父類的構(gòu)造函數(shù),例如:publice MyException extends Exception { public MyException(String message) {super.(message)}},定義好異常之后,我們可以在程序運(yùn)行到某一步之后,拋出該異常,可以方便我們查找問(wèn)題。

自定義的異常和系統(tǒng)異常的使用方法一致,都是使用throw new MyException("密碼不正確");進(jìn)行異常的拋出。拋出該異常之后,我們可以在調(diào)用含有該異常的方法的時(shí)候,使用try {} catch(MyException e) {}進(jìn)行捕獲處理,當(dāng)然我們也可以講異常繼續(xù)往上一級(jí)進(jìn)行拋,讓上一級(jí)的調(diào)用者進(jìn)行處理,將異常繼續(xù)往上拋的方式和系統(tǒng)異常一樣,在方法的后面使用throws拋向上一級(jí)。

java自定義異常

剛才說(shuō)了自定義的異常和普通類一樣,那么自定義的異常也是可以被繼承,我們創(chuàng)建兩個(gè)自定義的異常 ParentException和ChildException,其中ChildException繼承于ParentException,在我們開發(fā)中,經(jīng)常會(huì)有不同的情況進(jìn)行不同的處理,例如在一個(gè)方法中可能出現(xiàn)ChildException,ParentException,Exception三種異常,我們使用try {} catch(Exception e){}進(jìn)行捕獲的時(shí)候,我們需要按照由子到父的捕獲順序,也就是說(shuō)我們捕獲異常的順序?yàn)镃hildException, ParentException, Exception,格式為 try {} catch (ChildException e){} catch (ParentException e){} catch (Exception e){},如果我們的調(diào)用順序顛倒之后,程序無(wú)論發(fā)生任何異常都只會(huì)被Exception捕獲,不會(huì)被子異常類捕獲,原因是當(dāng)程序catch到一個(gè)異常之后,就不會(huì)繼續(xù)往下進(jìn)行,而Exception是異常類的父類,只要發(fā)生異常就會(huì)被它捕獲,所以后面的不會(huì)繼續(xù)執(zhí)行,所以在捕獲異常的時(shí)候,順序非常重要,否則程序打印的異常會(huì)和我們預(yù)期的不一樣。

 

文章“【Java基礎(chǔ)知識(shí)】java自定義異常怎么使用”已幫助

>>本文地址:http://hqfphsz.com/zhuanye/2020/48472.html

THE END  

聲明:本站稿件版權(quán)均屬中公教育優(yōu)就業(yè)所有,未經(jīng)許可不得擅自轉(zhuǎn)載。

1 您的年齡

2 您的學(xué)歷

3 您更想做哪個(gè)方向的工作?

獲取測(cè)試結(jié)果
  • 大前端大前端
  • 大數(shù)據(jù)大數(shù)據(jù)
  • 互聯(lián)網(wǎng)營(yíng)銷互聯(lián)網(wǎng)營(yíng)銷
  • JavaJava
  • Linux云計(jì)算Linux
  • Python+人工智能Python
  • 嵌入式物聯(lián)網(wǎng)嵌入式
  • 全域電商運(yùn)營(yíng)全域電商運(yùn)營(yíng)
  • 軟件測(cè)試軟件測(cè)試
  • 室內(nèi)設(shè)計(jì)室內(nèi)設(shè)計(jì)
  • 平面設(shè)計(jì)平面設(shè)計(jì)
  • 電商設(shè)計(jì)電商設(shè)計(jì)
  • 網(wǎng)頁(yè)設(shè)計(jì)網(wǎng)頁(yè)設(shè)計(jì)
  • 全鏈路UI/UE設(shè)計(jì)UI設(shè)計(jì)
  • VR/AR游戲開發(fā)VR/AR
  • 網(wǎng)絡(luò)安全網(wǎng)絡(luò)安全
  • 新媒體與短視頻運(yùn)營(yíng)新媒體
  • 直播帶貨直播帶貨
  • 智能機(jī)器人軟件開發(fā)智能機(jī)器人
 

快速通道fast track

近期開班時(shí)間TIME