Java異常

image

基本概念

1. 所有的異常都是從Throwable繼承而來的缰雇,是所有異常的共同祖先渗柿。

2. Throwable有兩個(gè)子類,Error和Exception。

Error

Error是錯(cuò)誤辰如,通常包括以下兩類:

  • 編譯期的所有錯(cuò)誤

類定義錯(cuò)誤、少分號(hào)贵试、符號(hào)錯(cuò)誤等等

  • 虛擬機(jī)自身錯(cuò)誤(如上圖)

內(nèi)存溢出(遞歸)

Error表示的是程序自身無法處理的異常

什么叫程序自身無法處理琉兜?

對(duì)比Exception,是可以try catch捕獲的毙玻,而error不可以

Exception

Exception是程序可以處理的異常豌蟋,通過try catch語(yǔ)句塊可以將出現(xiàn)的異常捕獲,然后進(jìn)行相應(yīng)的處理桑滩。

Exception通常分為Runtime Exception和IO Exception梧疲,而所有的error和Runtime Exception都是unchecked exception

也就是說error和runtime exception是不必檢查的異常,這個(gè)檢查是指編譯期,比如:

  • 數(shù)組越界
  • 除數(shù)為0
  • 類為定義

這些異常在編譯期是檢查不出來的幌氮,只有運(yùn)行的時(shí)候才能出現(xiàn)缭受。

而另一方面,IOException被稱為checked Exception该互。

可以注意到每次我們?cè)趯懳募鞯拇a時(shí)米者,編輯器都會(huì)提示出這里可能出現(xiàn)FileNotFoundException,這就是編譯期可預(yù)測(cè)的異常宇智。

異常的處理

1. try-catch

try{
    //需要執(zhí)行的代碼
}catch(Exception  e){
    //需要處理的異常
}

這里注意用了向上轉(zhuǎn)型的概念蔓搞,所有的Runtime Exception都繼承于Excepition,當(dāng)輸出的時(shí)候則由編譯期判斷出具體的類型

2. throw/throws

如果用try-catch對(duì)異常捕獲處理随橘,也可以用throw/throws關(guān)鍵字將異常拋給上層方法處理喂分,throw用于在方法內(nèi)拋出異常,而throws用于方法名后聲明可能拋出的異常類型机蔗,如下:

import java.io.*;
public class className
{
  public void deposit(double amount) throws RemoteException
  {
    // Method implementation
    throw new RemoteException();
  }
  //Remainder of class definition
}

3. finally關(guān)鍵字

finally 關(guān)鍵字用來創(chuàng)建在 try 代碼塊后面執(zhí)行的代碼塊妻顶。

無論是否發(fā)生異常,finally 代碼塊中的代碼總會(huì)被執(zhí)行蜒车。

    try{
      // 程序代碼
    }catch(異常類型1 異常的變量名1){
      // 程序代碼
    }catch(異常類型2 異常的變量名2){
      // 程序代碼
    }finally{
      // 程序代碼
    }

finally和return 的執(zhí)行順序

image

考慮到try-catch中的return讳嘱,finally的執(zhí)行發(fā)生在return執(zhí)行之后返回之前,也就是說先執(zhí)行return 后面的指令酿愧,再執(zhí)行return沥潭。可以用debug試出來嬉挡,如上圖钝鸽。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市庞钢,隨后出現(xiàn)的幾起案子拔恰,更是在濱河造成了極大的恐慌,老刑警劉巖基括,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件颜懊,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡风皿,警方通過查閱死者的電腦和手機(jī)河爹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來桐款,“玉大人咸这,你說我怎么就攤上這事∧д#” “怎么了媳维?”我有些...
    開封第一講書人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵酿雪,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我侄刽,道長(zhǎng)执虹,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任唠梨,我火速辦了婚禮袋励,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘当叭。我一直安慰自己茬故,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開白布蚁鳖。 她就那樣靜靜地躺著磺芭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪醉箕。 梳的紋絲不亂的頭發(fā)上钾腺,一...
    開封第一講書人閱讀 51,631評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音讥裤,去河邊找鬼放棒。 笑死,一個(gè)胖子當(dāng)著我的面吹牛己英,可吹牛的內(nèi)容都是我干的间螟。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼损肛,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼厢破!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起治拿,我...
    開封第一講書人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤摩泪,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后劫谅,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體见坑,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年同波,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了鳄梅。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片叠国。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡未檩,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出粟焊,到底是詐尸還是另有隱情冤狡,我是刑警寧澤孙蒙,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站悲雳,受9級(jí)特大地震影響挎峦,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜合瓢,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一坦胶、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧晴楔,春花似錦顿苇、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至则果,卻和暖如春幔翰,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背西壮。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工遗增, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人款青。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓贡定,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親可都。 傳聞我的和親對(duì)象是個(gè)殘疾皇子缓待,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355

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

  • 異常分類 Java將異常分為兩種,Checked異常和Runtime異常渠牲。Java認(rèn)為Checked異常都是可以在...
    LLorenzo閱讀 712評(píng)論 0 1
  • 本文部分來自于:代碼鋼琴家blog address:www.cnblogs.com/lulipro/p/75042...
    八目朱勇銘閱讀 1,317評(píng)論 0 4
  • Java異常簡(jiǎn)介 Java異常是Java提供的一種識(shí)別及響應(yīng)錯(cuò)誤的一致性機(jī)制旋炒。Java異常機(jī)制可以使程序中異常處理...
    JourWon閱讀 1,260評(píng)論 0 5
  • 問:java 異常有哪幾種,特點(diǎn)是什么签杈? 答:異常是發(fā)生在程序執(zhí)行過程中阻礙程序正常執(zhí)行的錯(cuò)誤操作瘫镇,只要在 Jav...
    Little丶Jerry閱讀 601評(píng)論 0 0
  • 1215,到青海第29天答姥! 璇和小紅請(qǐng)吃飯铣除,大家一起吃的炒菜! 有一個(gè)叫故鄉(xiāng)味的飯店感覺名字很不錯(cuò)鹦付,都是各地的特色...
    yang光雨閱讀 71評(píng)論 0 0