2020-02-28-Java

1.異常的概念

exception
異常不是程序的錯誤够滑,而是程序在運行時發(fā)生的意外,開發(fā)者在開發(fā)時沒有預(yù)料到,或者在代碼中故意拋出異常(發(fā)生一個消息穿铆,表示這個程序有問題),沒有處理的異常會導(dǎo)致程序終止運行斋荞。

1.1異常是什么荞雏,有異常存在

【圖片】


Snipaste_2020-02-28_13-47-33.png

1.2異常是需要處理的

【異常不處理的圖片】


Snipaste_2020-02-28_13-49-26.png

如何處理?
引入異常處理機制平酿。

2.異常處理機制

使用try-catch
try:表示可能拋出異常的部分凤优。使用try來表示某段程序可能存在異常
catch:捕獲異常部分,捕獲后可以來處理蜈彼。
先try后catch

語法:

try{//可能發(fā)生異常的部分
}
catch(exception ex){//捕獲異常后如何處理筑辨,捕獲到的異常會使用ex來表示。
}
try和catch如何編寫幸逆?
【圖片】


Snipaste_2020-02-28_13-56-57.png

使用快捷alt+/
使用try棍辕,catch可以避免異常發(fā)生時暮现,程序終止運行,從而保持程序繼續(xù)向下執(zhí)行楚昭。
【案例】

3.異常的分類

不同類別的異常栖袋,處理手段不一樣,分類的目的是讓異常更為具體抚太。
Object-->Throwable
Throwable:Error和Exception
Error:AWTError塘幅、ThreadDeath等
Exception:RuntimeException和其他。
RuntimeException:ArithmeticException凭舶、NullPointerException晌块、NumberFormatException等等。
【異常層次】


Snipaste_2020-02-28_14-13-41.png

通常異常分為checked和Runtime:
checked異常帅霜,在編譯階段發(fā)生匆背。會導(dǎo)致編譯不能進行下去。
Runtime異常身冀,在運行階段發(fā)生钝尸。會導(dǎo)致運行不能進行下去。

注意:

程序是先編譯后執(zhí)行搂根。編譯階段在運行前珍促。

4.try和catch變體形式

4.1多個catch

程序會按順序匹配執(zhí)行catch;但是只會匹配一個剩愧。

【案例】


Snipaste_2020-02-28_15-22-33.png
Snipaste_2020-02-28_15-22-46.png

思考:
catch的順序能不能變猪叙?
(1)多個catch同時使用,catch中捕獲的異常越具體(也就是子類異常)越需要寫在上面仁卷。遵循的原則就是你考慮的東西越具體穴翩,越要早匹配。所以按異常分類锦积,子類在上書寫芒帕,父類在下書寫。


Snipaste_2020-02-28_14-34-51.png

(2)同級的異常丰介,可以互換位置背蟆。(同一個父類下的子類)


1.png

4.2finally

無論如何都會往下執(zhí)行。
意義:通常是放置一些釋放資源的代碼哮幢。哪些屬于釋放資源的代碼带膀?
釋放磁盤空間,釋放內(nèi)存橙垢,釋放已經(jīng)占有的資源本砰。
注意:finally中是必須要執(zhí)行的代碼,如果再次出現(xiàn)異常怎么辦钢悲?繼續(xù)try/catch


Snipaste_2020-02-28_15-22-46.png

5.throws

拋出

5.1為什么要throws点额?

希望異常交給合理的人來處理舔株。

5.2throws的方式?

兩種方式:
(1)原處throws異常
【案例】


Snipaste_2020-02-28_15-25-04.png

(2)在方法定義時throws異常还棱。
【圖片】出現(xiàn)異常的方法载慈,需要使用try和catch包裹


Snipaste_2020-02-28_14-59-32.png

【案例】


Snipaste_2020-02-28_15-02-54.png

注意:方法定義時拋出的異常不能比方法內(nèi)出現(xiàn)的異常級別小(級別是指類的層次)
作業(yè):
模擬電商購買場景:
(1)第一步:提示用戶登錄珍手,用戶輸入賬號和密碼办铡。賬號密碼不對,拋出異常琳要。
(2)第二步:登錄后寡具,輸入購買商品,如果商品名不是指定名稱稚补,拋出異常童叠。
(3)第三步:輸入購買數(shù)量。如果不合法拋出異常课幕。
要求:使用try/catch來處理程序異常厦坛,可以使用主動throw異常,也可以使用程序運行時自身發(fā)生的異常乍惊。并且處理他們杜秸。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市润绎,隨后出現(xiàn)的幾起案子撬碟,更是在濱河造成了極大的恐慌,老刑警劉巖莉撇,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件呢蛤,死亡現(xiàn)場離奇詭異,居然都是意外死亡稼钩,警方通過查閱死者的電腦和手機顾稀,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進店門达罗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來坝撑,“玉大人,你說我怎么就攤上這事粮揉⊙怖睿” “怎么了?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵扶认,是天一觀的道長侨拦。 經(jīng)常有香客問我,道長辐宾,這世上最難降的妖魔是什么狱从? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任膨蛮,我火速辦了婚禮,結(jié)果婚禮上季研,老公的妹妹穿的比我還像新娘敞葛。我一直安慰自己,他們只是感情好与涡,可當我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布惹谐。 她就那樣靜靜地躺著,像睡著了一般驼卖。 火紅的嫁衣襯著肌膚如雪氨肌。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天酌畜,我揣著相機與錄音怎囚,去河邊找鬼。 笑死檩奠,一個胖子當著我的面吹牛桩了,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播埠戳,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼井誉,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了整胃?” 一聲冷哼從身側(cè)響起颗圣,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎屁使,沒想到半個月后在岂,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡蛮寂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年蔽午,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片酬蹋。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡及老,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出范抓,到底是詐尸還是另有隱情骄恶,我是刑警寧澤,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布匕垫,位于F島的核電站僧鲁,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜寞秃,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一斟叼、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧春寿,春花似錦犁柜、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至绢淀,卻和暖如春萤悴,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背皆的。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工覆履, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人费薄。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓硝全,卻偏偏與公主長得像,于是被迫代替她去往敵國和親楞抡。 傳聞我的和親對象是個殘疾皇子伟众,可洞房花燭夜當晚...
    茶點故事閱讀 45,044評論 2 355