Java基礎(chǔ)-異常(6)

74. throw 和 throws 的區(qū)別魁巩?

throws是用來(lái)聲明一個(gè)方法可能拋出的所有異常信息徒役,throws是將異常聲明但是不處理寞蚌,而是將異常往上傳,誰(shuí)調(diào)用我就交給誰(shuí)處理麸折。而throw則是指拋出的一個(gè)具體的異常類型锡凝。

75. final、finally垢啼、finalize 有什么區(qū)別窜锯?

final可以修飾類、變量膊夹、方法衬浑,修飾類表示該類不能被繼承、修飾方法表示該方法不能被重寫(xiě)放刨、修飾變量表示該變量是一個(gè)常量不能被重新賦值工秩。

finally一般作用在try-catch代碼塊中,在處理異常的時(shí)候进统,通常我們將一定要執(zhí)行的代碼方法finally代碼塊中助币,表示不管是否出現(xiàn)異常,該代碼塊都會(huì)執(zhí)行螟碎,一般用來(lái)存放一些關(guān)閉資源的代碼眉菱。

finalize是一個(gè)方法,屬于Object類的一個(gè)方法掉分,而Object類是所有類的父類俭缓,該方法一般由垃圾回收器來(lái)調(diào)用克伊,當(dāng)我們調(diào)用System的gc()方法的時(shí)候,由垃圾回收器調(diào)用finalize(),回收垃圾华坦。?

76. try-catch-finally 中哪個(gè)部分可以省略愿吹?

答:catch 可以省略

原因:

更為嚴(yán)格的說(shuō)法其實(shí)是:try只適合處理運(yùn)行時(shí)異常,try+catch適合處理運(yùn)行時(shí)異常+普通異常惜姐。也就是說(shuō)犁跪,如果你只用try去處理普通異常卻不加以catch處理,編譯是通不過(guò)的歹袁,因?yàn)榫幾g器硬性規(guī)定坷衍,普通異常如果選擇捕獲,則必須用catch顯示聲明以便進(jìn)一步處理条舔。而運(yùn)行時(shí)異常在編譯時(shí)沒(méi)有如此規(guī)定枫耳,所以catch可以省略,你加上catch編譯器也覺(jué)得無(wú)可厚非逞刷。

理論上嘉涌,編譯器看任何代碼都不順眼妻熊,都覺(jué)得可能有潛在的問(wèn)題夸浅,所以你即使對(duì)所有代碼加上try,代碼在運(yùn)行期時(shí)也只不過(guò)是在正常運(yùn)行的基礎(chǔ)上加一層皮扔役。但是你一旦對(duì)一段代碼加上try帆喇,就等于顯示地承諾編譯器,對(duì)這段代碼可能拋出的異常進(jìn)行捕獲而非向上拋出處理亿胸。如果是普通異常坯钦,編譯器要求必須用catch捕獲以便進(jìn)一步處理;如果運(yùn)行時(shí)異常侈玄,捕獲然后丟棄并且+finally掃尾處理婉刀,或者加上catch捕獲以便進(jìn)一步處理。

至于加上finally序仙,則是在不管有沒(méi)捕獲異常突颊,都要進(jìn)行的“掃尾”處理。

77. try-catch-finally 中潘悼,如果 catch 中 return 了律秃,finally 還會(huì)執(zhí)行嗎?

答:會(huì)執(zhí)行治唤,在 return 前執(zhí)行棒动。

代碼示例1:

執(zhí)行結(jié)果:30

代碼示例2:

package com.java_02;

/*?*?java面試題--如果catch里面有return語(yǔ)句,

finally里面的代碼還會(huì)執(zhí)行嗎宾添?

*/

public class FinallyDemo2 {

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

????????System.out.println(getInt());

????}

????public static int getInt() {

????????????int a = 10;

????try {

????????System.out.println(a / 0);

????????a = 20;

????????} catch (ArithmeticException e){

????????????????a = 30; return a;

????????/* * return a 在程序執(zhí)行到這一步的時(shí)候船惨,這里不是return a 而是 return 30柜裸;這個(gè)返回路徑就形成了 但是呢,它發(fā)現(xiàn)后面還有finally粱锐,所以繼續(xù)執(zhí)行finally的內(nèi)容粘室,a=40 * 再次回到以前的路徑,繼續(xù)走return 30,形成返回路徑之后卜范,這里的a就不是a變量了衔统,而是常量30 */

????????????} finally {

????????????????a = 40;

????????????????return a;

//如果這樣,就又重新形成了一條返回路徑海雪,由于只能通過(guò)1個(gè)return返回锦爵,所以這里直接返回40

????????}

????????// return a;

????????}

? ?}

78. 常見(jiàn)的異常類有哪些?

NullPointerException:當(dāng)應(yīng)用程序試圖訪問(wèn)空對(duì)象時(shí)奥裸,則拋出該異常险掀。

SQLException:提供關(guān)于數(shù)據(jù)庫(kù)訪問(wèn)錯(cuò)誤或其他錯(cuò)誤信息的異常。

IndexOutOfBoundsException:指示某排序索引(例如對(duì)數(shù)組湾宙、字符串或向量的排序)超出范圍時(shí)拋出樟氢。

NumberFormatException:當(dāng)應(yīng)用程序試圖將字符串轉(zhuǎn)換成一種數(shù)值類型,但該字符串不能轉(zhuǎn)換為適當(dāng)格式時(shí)侠鳄,拋出該異常埠啃。

FileNotFoundException:當(dāng)試圖打開(kāi)指定路徑名表示的文件失敗時(shí),拋出此異常伟恶。

IOException:當(dāng)發(fā)生某種I/O異常時(shí)碴开,拋出此異常。此類是失敗或中斷的I/O操作生成的異常的通用類博秫。

ClassCastException:當(dāng)試圖將對(duì)象強(qiáng)制轉(zhuǎn)換為不是實(shí)例的子類時(shí)潦牛,拋出該異常。

ArrayStoreException:試圖將錯(cuò)誤類型的對(duì)象存儲(chǔ)到一個(gè)對(duì)象數(shù)組時(shí)拋出的異常挡育。

IllegalArgumentException:拋出的異常表明向方法傳遞了一個(gè)不合法或不正確的參數(shù)巴碗。

ArithmeticException:當(dāng)出現(xiàn)異常的運(yùn)算條件時(shí),拋出此異常即寒。例如橡淆,一個(gè)整數(shù)“除以零”時(shí),拋出此類的一個(gè)實(shí)例蒿叠。

NegativeArraySizeException:如果應(yīng)用程序試圖創(chuàng)建大小為負(fù)的數(shù)組明垢,則拋出該異常。

NoSuchMethodException:無(wú)法找到某一特定方法時(shí)市咽,拋出該異常痊银。

SecurityException:由安全管理器拋出的異常,指示存在安全侵犯施绎。

UnsupportedOperationException:當(dāng)不支持請(qǐng)求的操作時(shí)溯革,拋出該異常贞绳。

RuntimeExceptionRuntimeException:是那些可能在Java虛擬機(jī)正常運(yùn)行期間拋出的異常的超類。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末致稀,一起剝皮案震驚了整個(gè)濱河市冈闭,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌抖单,老刑警劉巖萎攒,帶你破解...
    沈念sama閱讀 211,348評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異矛绘,居然都是意外死亡耍休,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,122評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén)货矮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)羊精,“玉大人,你說(shuō)我怎么就攤上這事囚玫⌒酰” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,936評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵抓督,是天一觀的道長(zhǎng)燃少。 經(jīng)常有香客問(wèn)我,道長(zhǎng)本昏,這世上最難降的妖魔是什么供汛? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,427評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮涌穆,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘雀久。我一直安慰自己宿稀,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,467評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布赖捌。 她就那樣靜靜地躺著祝沸,像睡著了一般。 火紅的嫁衣襯著肌膚如雪越庇。 梳的紋絲不亂的頭發(fā)上罩锐,一...
    開(kāi)封第一講書(shū)人閱讀 49,785評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音卤唉,去河邊找鬼涩惑。 笑死,一個(gè)胖子當(dāng)著我的面吹牛桑驱,可吹牛的內(nèi)容都是我干的竭恬。 我是一名探鬼主播跛蛋,決...
    沈念sama閱讀 38,931評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼痊硕!你這毒婦竟也來(lái)了赊级?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,696評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤岔绸,失蹤者是張志新(化名)和其女友劉穎理逊,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體盒揉,經(jīng)...
    沈念sama閱讀 44,141評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡挡鞍,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,483評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了预烙。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片墨微。...
    茶點(diǎn)故事閱讀 38,625評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖扁掸,靈堂內(nèi)的尸體忽然破棺而出翘县,到底是詐尸還是另有隱情,我是刑警寧澤谴分,帶...
    沈念sama閱讀 34,291評(píng)論 4 329
  • 正文 年R本政府宣布锈麸,位于F島的核電站,受9級(jí)特大地震影響牺蹄,放射性物質(zhì)發(fā)生泄漏忘伞。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,892評(píng)論 3 312
  • 文/蒙蒙 一沙兰、第九天 我趴在偏房一處隱蔽的房頂上張望氓奈。 院中可真熱鬧,春花似錦鼎天、人聲如沸舀奶。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)育勺。三九已至,卻和暖如春罗岖,著一層夾襖步出監(jiān)牢的瞬間涧至,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工桑包, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留南蓬,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像蓖康,于是被迫代替她去往敵國(guó)和親铐炫。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,492評(píng)論 2 348