所謂異常,就是程序運行過程中出現(xiàn)的非正常情況。所有的程序都存在一些未知的問題或是錯誤,如果這些問題不進行處理,可能會給用戶造成一定的損失。因此對于Java異常中的問題,會是面試官經(jīng)常詢問的。
1、throw和throws的區(qū)別?
答:throw和throws的區(qū)別:throw代表動作,表示拋出一個異常的動作;throws代表一種狀態(tài),代表方法可能有異常拋出;throw用在方法實現(xiàn)中,而throws用在方法聲明中;throw只能用于拋出一種異常,而throws可以拋出多個異常。
2、final、finally、finalize有什么區(qū)別?
答:final:
(1)修飾符(關(guān)鍵字)如果一個類被聲明為final,意味著它不能再派生新的子類,不能作為父類被繼承。因此一個類不能及被聲明為abstract,又被聲明為final的。
(2)將變量或方法聲明為final,可以保證他們使用中不被改變。被聲明為final的變量必須在聲明時給定初值,而以后的引用中只能讀取,不可修改,被聲明為final的方法也同樣只能使用,不能重載。
Finally:
在異常處理時提供finally塊來執(zhí)行清楚操作。如果拋出一個異常,那么相匹配的catch語句就會執(zhí)行,然后控制就會進入finally塊,如果有的話。
finalize:
是方法名。java技術(shù)允許使用finalize()方法在垃圾收集器將對象從內(nèi)存中清除之前做必要的清理工作。這個方法是在垃圾收集器在確定了,被清理對象沒有被引用的情況下調(diào)用的。
finalize是在Object類中定義的,因此,所有的類都繼承了它。子類可以覆蓋finalize()方法,來整理系統(tǒng)資源或者執(zhí)行其他清理工作。
3、try-catch-finally中哪個部分可以省略?
答:catch和finally語句塊可以省略其中一個。
4、try,catch,finally都有return語句時執(zhí)行哪個?
答:(1)不論是否出現(xiàn)異常,finally塊中代碼都會執(zhí)行;
(2)當(dāng)try和catch中有return時,finally仍然會執(zhí)行;
(3)finally是在return后面的表達式運算后執(zhí)行的(此時并沒有返回運算后的值,而是先把要返回的值保存起來,不管finally中的代碼怎么樣,返回的值都不會改變,任然是之前保存的值),所以函數(shù)返回值是在finally執(zhí)行前確定的;
(4)finally中最好不要包含return,否則程序會提前退出,返回值不是try或catch中保存的返回值。
因此,任何執(zhí)行try或者catch中的return語句之前,都會先執(zhí)行finally語句,如果finally存在的話。
如果finally中有return語句,那么程序就return了,所以finally中的return是一定會被return的,編譯器把finally中的return實現(xiàn)為一個warning。
5、常見的異常類有哪些?
答:
以上就是長沙牛耳教育java培訓(xùn)機構(gòu)的小編針對“五道互聯(lián)網(wǎng)常見的java異常筆試題”的內(nèi)容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務(wù)。
Java筆試題