We believe that writing is about content, about what you want to say – not about fancy formatting.
我們堅(jiān)信寫作寫的是內(nèi)容,所思所想,而不是花樣格式。
— Ulysses for Mac
Java第7天上午
上午主要講了異常處理
學(xué)習(xí)目標(biāo):
- 理解異常概念
- 運(yùn)用try塊、catch塊和finally塊處理異常
- 運(yùn)用多重catch塊處理異常
- 運(yùn)用嵌套try catch塊處理異常
- 運(yùn)用throw 和 throws處理異常
- 運(yùn)用java編寫和使用自定義異常
生活中的異常:

什么是異常:

異常類的層次結(jié)構(gòu):


- Throwable
- Exception
- Error
記住常見的異常:
- Exception
(異常層次結(jié)構(gòu)的根類) - ArithmeticException
(算術(shù)錯(cuò)誤情形,如以零作除數(shù)) - ArrayIndexOutOfBoundException
(數(shù)組大小小于或大于實(shí)際的數(shù)組大小) - NullPointerException
(嘗試訪問 null 對(duì)象成員) - ....

異常處理:

進(jìn)行異常處理:(通過5個(gè)關(guān)鍵字實(shí)現(xiàn))
- try catch finally
-
throw throws
異常處理
try catch finally:
異常處理塊的一般形式:

try catch 情況一:

try中不會(huì)產(chǎn)生異常則不進(jìn)入catch而執(zhí)行后面的語句
try catch 情況一示例:

學(xué)會(huì)看異常信息:

try catch 情況二:

try中產(chǎn)生了異常 進(jìn)入catch中 執(zhí)行完catch中語句后再執(zhí)行后面的代碼段5
try catch 情況二示例:

try catch 情況三:

如果異常類型不匹配,則不進(jìn)入相應(yīng)catch內(nèi),程序中斷運(yùn)行。
try catch 情況三示例:

由情況三 引出finally:


- 不管有木有出現(xiàn)異常,finally塊中代碼都會(huì)執(zhí)行
- 當(dāng)try和catch中有return時(shí),finally仍然會(huì)執(zhí)行
- finally是在return后面的表達(dá)式運(yùn)算后執(zhí)行的,所以函數(shù)返回值是在finally執(zhí)行前確定的
多重catch塊:

注意多重catch塊 異常 順序:
catch異常類 要先catch子類后父類

所以 這樣錯(cuò):

(IOException 是 FileNotFoundException的父類)
下面才對(duì):
public class T3 {
public static void main(String[] args) {
try{
FileReader read = new FileReader("d:/test.txt");
char a = (char)read.read();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
下午做了一些練習(xí):
每日一練:
課堂作業(yè):
作業(yè)點(diǎn)我查看
課外練習(xí):
課外作業(yè)點(diǎn)我查看
拓展閱讀:
1 - Java異常體系結(jié)構(gòu)
2 - 深入理解java異常處理機(jī)制
世界上所有的追求都是因?yàn)闊釔?br> 一枚愛編碼 愛生活 愛分享的IT信徒
— hongXkeX
