java異常

異常

異常是指在程序的運(yùn)行過(guò)程中所發(fā)生的不正常的情況著洼,它會(huì)中斷正在運(yùn)行的程序

異常處理

try/catch

.....

try{

? ??????//有可能發(fā)生異常的代碼

}catch(異常類型 e){

? ? //若發(fā)生異常,catch負(fù)責(zé)捕獲(匹配)并處理異常

? ? //若沒(méi)有發(fā)生異常豹悬,則跳過(guò)catch

}

.....


異常過(guò)程處理

Exception是所有異常類的直接或間接父類

異常類型不匹配時(shí)瞻佛,程序中斷運(yùn)行


try/catch/finally

.....

try{

? ??????//有可能發(fā)生異常的代碼

}catch(異常類型 e){

????????//若發(fā)生異常伤柄,catch負(fù)責(zé)捕(匹配)并處理異常

????????//若沒(méi)有發(fā)生異常,則跳過(guò)catch秤朗,執(zhí)行finally

}finally{

????//finally 用于進(jìn)行收尾工作(關(guān)閉數(shù)據(jù)庫(kù)笔喉、文件,釋放內(nèi)存等資源)

}

.....

不管是否發(fā)生異常作谭,finally都執(zhí)行

執(zhí)行finally前折欠,system.exit(0) 正常退出jvm秧倾,finally不會(huì)執(zhí)行

catch可以省略,變成try/finally塊


return在try/catch/finally塊中的執(zhí)行順序

順序執(zhí)行后返回執(zhí)行return


異常的分類


Throwable類是 Java 語(yǔ)言中所有錯(cuò)誤(Error)或異常(Exception)的父類

Error類表示錯(cuò)誤類农猬。僅靠程序本身無(wú)法恢復(fù)的嚴(yán)重錯(cuò)誤

Exception 類表示異常類售淡,可以通過(guò)java 異常處理機(jī)制處理。


異常分為兩種情況

RuntimeException:????運(yùn)行時(shí)異常揍堕。不要求程序必須做出處理汤纸。是所有運(yùn)行時(shí)異常的父類。

CheckedException:????檢查時(shí)異常楞慈。要求程序必須處理啃擦,不處理編譯不通過(guò)。


運(yùn)行時(shí)異常和檢查時(shí)異常的區(qū)別

運(yùn)行時(shí)異常:包括RuntimeException及其所有子類聚霜。不要求程序必須對(duì)它們作出處理,比如InputMismatchException弟劲、ArithmeticException姥芥、NullPointerException等。即使沒(méi)有使用try-catch或throws進(jìn)行處理,仍舊可以進(jìn)行編譯和運(yùn)行虱咧。如果運(yùn)行時(shí)發(fā)生異常腕巡,會(huì)輸出異常的堆棧信息并中止程序執(zhí)行。

Checked異常(非運(yùn)行時(shí)異常):除了運(yùn)行時(shí)異常外的其他異常類都是Checked異常绘沉。程序必須捕獲或者聲明拋出這種異常,否則出現(xiàn)編譯錯(cuò)誤择懂,無(wú)法通過(guò)編譯困曙。


聲明異常

一個(gè)方法可能存在異常谦去,而此時(shí)自身又無(wú)法更好的處理,可以交給外界處理鳄哭。此時(shí)用throws聲明并拋出異常妆丘。

如:public? ?staticint?? div(inta,int b)????throws????ArithmeticException{

}

用throws聲明后,調(diào)用處需要處理該異常珊膜,若是不知道如何處理異常宣脉,可繼續(xù)聲明異常,這個(gè)過(guò)程稱為異常上拋


聲明異常和方法重載的關(guān)系

方法重載與聲明異常無(wú)關(guān)


聲明異常和方法重寫(xiě)的關(guān)系

1.父類方法聲明了異常竹祷,子類可不聲明任何異常

可以認(rèn)為父類方法拋出異常,子類在重寫(xiě)過(guò)程中把該異常處理掉了感憾,所以子類方法不用聲明異常令花。

2.父類聲明了異常(檢測(cè)時(shí)或運(yùn)行時(shí)),子類聲明完全一樣的異常


手動(dòng)拋出異常

除了系統(tǒng)自動(dòng)拋出異常外,有些問(wèn)題需要開(kāi)發(fā)者手動(dòng)拋出異常嫂沉。

而手動(dòng)拋出異常需要使用關(guān)鍵字throw

public class Student {

???? private String name;

???? private String gender;


???? public String getName() {

???????? return name;

???? }


???? public void? setName(String name) {

???????? this.name = name;

???? }


???? public String getGender() {

???????? return gender;

???? }


???? public void? setGender(String gender) throws? Exception{

???????? if(gender.equals("男") || gender.equals("女")) {????????????

????????????? this.gender = gender;

???????? }else {

????????????? throw new Exception("性別不合法!");

???????? }

???? }


???? public? Student(String name, String gender) {

? ? ? ? ? ? ??super();

? ? ? ? ? ? ??this.name = name;

???? ???????? this.gender = gender;

???? }


???? public? Student() {

???????? super();

???? }


}

--------------------------------------------

public class Test01 {

???? public static void? main(String[] args){

???????? Studentstu = new Student();

???????? stu.setName("二狗");

???????? try {

????????????? stu.setGender("xxx");

???????? }catch (Exception e) {

????????????? System.out.println(e.getMessage());

???????? }

???? }

}

自定義異常

如果開(kāi)發(fā)者需要手動(dòng)拋出的異常在系統(tǒng)不存在,可以自定義異常慎王。

如果要自定義異常,首先要確定異常類型蜀漆,如果異常是運(yùn)行時(shí)異常漫蛔,必須繼承RuntimeException或其子類;如果異常是檢查時(shí)異常,必須繼承Exception或其子類蠕嫁。

異常的命名方式毯盈,參考系統(tǒng)命名方式,以Exception結(jié)尾赘阀。

public classAgeExceptionextends Exception{


???? public AgeException(){

???????? super();

???? }


???? publicAgeException(Stringmessage) {

???????? super(message);

???? }


}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末基公,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子轰豆,更是在濱河造成了極大的恐慌,老刑警劉巖酸休,帶你破解...
    沈念sama閱讀 219,490評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件斑司,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡互站,警方通過(guò)查閱死者的電腦和手機(jī)僵缺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)谤饭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)揉抵,“玉大人嗤疯,你說(shuō)我怎么就攤上這事∠钒眨” “怎么了脚囊?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,830評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵悔耘,是天一觀的道長(zhǎng)衬以。 經(jīng)常有香客問(wèn)我,道長(zhǎng)看峻,這世上最難降的妖魔是什么互妓? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,957評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮霉猛,結(jié)果婚禮上惜浅,老公的妹妹穿的比我還像新娘。我一直安慰自己坛悉,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,974評(píng)論 6 393
  • 文/花漫 我一把揭開(kāi)白布挣轨。 她就那樣靜靜地躺著卷扮,像睡著了一般均践。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上彤委,一...
    開(kāi)封第一講書(shū)人閱讀 51,754評(píng)論 1 307
  • 那天焦影,我揣著相機(jī)與錄音,去河邊找鬼舶担。 笑死彬呻,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的祖搓。 我是一名探鬼主播拯欧,決...
    沈念sama閱讀 40,464評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼财骨,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼镐作!你這毒婦竟也來(lái)了藏姐?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤该贾,失蹤者是張志新(化名)和其女友劉穎羔杨,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體杨蛋,經(jīng)...
    沈念sama閱讀 45,847評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡兜材,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,995評(píng)論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了逞力。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片曙寡。...
    茶點(diǎn)故事閱讀 40,137評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖寇荧,靈堂內(nèi)的尸體忽然破棺而出举庶,到底是詐尸還是另有隱情户侥,我是刑警寧澤,帶...
    沈念sama閱讀 35,819評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站署尤,受9級(jí)特大地震影響曹体,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜串稀,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,482評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望清寇。 院中可真熱鬧翩迈,春花似錦负饲、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,023評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)逢慌。三九已至攻泼,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間牛欢,已是汗流浹背傍睹。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,149評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工腊脱, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留震鹉,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,409評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像磕仅,于是被迫代替她去往敵國(guó)和親榕订。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,086評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Java異常類型 所有異常類型都是Throwable的子類憔辫,Throwable把異常分成兩個(gè)不同分支的子類Erro...
    予別她閱讀 928評(píng)論 0 2
  • 異常分類 Java將異常分為兩種,Checked異常和Runtime異常锦亦。Java認(rèn)為Checked異常都是可以在...
    LLorenzo閱讀 718評(píng)論 0 1
  • 目錄介紹 10.0.0.1 見(jiàn)過(guò)哪些運(yùn)行時(shí)異常展父?異常處理機(jī)制知道哪些?從異常是否必須需要被處理的角度來(lái)看怎么分類吕漂?...
    楊充211閱讀 478評(píng)論 0 1
  • 馬上11:00了,此刻我才來(lái)日更思灰,為什么洒疚? 只因昨日公司年會(huì),大家玩得比較high乏德,回到家收拾收拾鹅经,差不多凌晨2:...
    姵穎閱讀 161評(píng)論 0 0
  • 第一次騎電動(dòng)車幻妓,我就把人攤子給撞了肉津。 01 我不會(huì)騎車妹沙,自行車也騎不好玄窝,就別提電動(dòng)車了×┛椋或許你都從來(lái)沒(méi)見(jiàn)過(guò)這么笨的...
    天黑不卸妝閱讀 489評(píng)論 0 2