站長資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

        2020全新Java面試題——異常

        2020全新Java面試題——異常

        1、throw 和 throws 的區(qū)別?

        throws是用來聲明一個方法可能拋出的所有異常信息,throws是將異常聲明但是不處理,而是將異常往上傳,誰調(diào)用我就交給誰處理。而throw則是指拋出的一個具體的異常類型。

        2、final、finally、finalize 有什么區(qū)別?

        final可以修飾類、變量、方法,修飾類表示該類不能被繼承、修飾方法表示該方法不能被重寫、修飾變量表示該變量是一個常量不能被重新賦值。

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

        (視頻教程推薦:java視頻教程)

        finalize是一個方法,屬于Object類的一個方法,而Object類是所有類的父類,該方法一般由垃圾回收器來調(diào)用,當(dāng)我們調(diào)用System的gc()方法的時候,由垃圾回收器調(diào)用finalize(),回收垃圾。

        3、try-catch-finally 中哪個部分可以省略?

        答:catch 可以省略

        原因:

        更為嚴(yán)格的說法其實是:try只適合處理運行時異常,try+catch適合處理運行時異常+普通異常。也就是說,如果你只用try去處理普通異常卻不加以catch處理,編譯是通不過的,因為編譯器硬性規(guī)定,普通異常如果選擇捕獲,則必須用catch顯示聲明以便進一步處理。而運行時異常在編譯時沒有如此規(guī)定,所以catch可以省略,你加上catch編譯器也覺得無可厚非。

        理論上,編譯器看任何代碼都不順眼,都覺得可能有潛在的問題,所以你即使對所有代碼加上try,代碼在運行期時也只不過是在正常運行的基礎(chǔ)上加一層皮。但是你一旦對一段代碼加上try,就等于顯示地承諾編譯器,對這段代碼可能拋出的異常進行捕獲而非向上拋出處理。如果是普通異常,編譯器要求必須用catch捕獲以便進一步處理;如果運行時異常,捕獲然后丟棄并且+finally掃尾處理,或者加上catch捕獲以便進一步處理。

        至于加上finally,則是在不管有沒捕獲異常,都要進行的“掃尾”處理。

        (相關(guān)教程推薦:java入門程序)

        4、try-catch-finally 中,如果 catch 中 return 了,finally 還會執(zhí)行嗎?

        答:會執(zhí)行,在 return 前執(zhí)行。

        代碼示例1:

          /*  * java面試題--如果catch里面有return語句,finally里面的代碼還會執(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í)行到這一步的時候,這里不是return a 而是 return 30;這個返回路徑就形成了              * 但是呢,它發(fā)現(xiàn)后面還有finally,所以繼續(xù)執(zhí)行finally的內(nèi)容,a=40              * 再次回到以前的路徑,繼續(xù)走return 30,形成返回路徑之后,這里的a就不是a變量了,而是常量30              */         } finally {             a = 40;         }   //      return a;     } }

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

        代碼示例2:

          package com.java_02;   /*  * java面試題--如果catch里面有return語句,finally里面的代碼還會執(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í)行到這一步的時候,這里不是return a 而是 return 30;這個返回路徑就形成了              * 但是呢,它發(fā)現(xiàn)后面還有finally,所以繼續(xù)執(zhí)行finally的內(nèi)容,a=40              * 再次回到以前的路徑,繼續(xù)走return 30,形成返回路徑之后,這里的a就不是a變量了,而是常量30              */         } finally {             a = 40;             return a; //如果這樣,就又重新形成了一條返回路徑,由于只能通過1個return返回,所以這里直接返回40         }   //      return a;     } }

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

        5、常見的異常類有哪些?

        • NullPointerException:當(dāng)應(yīng)用程序試圖訪問空對象時,則拋出該異常。

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

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

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

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

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

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

        • ArrayStoreException:試圖將錯誤類型的對象存儲到一個對象數(shù)組時拋出的異常。

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

        • ArithmeticException:當(dāng)出現(xiàn)異常的運算條件時,拋出此異常。例如,一個整數(shù)“除以零”時,拋出此類的一個實例。

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

        • NoSuchMethodException:無法找到某一特定方法時,拋出該異常。

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

        • UnsupportedOperationException:當(dāng)不支持請求的操作時,拋出該異常。

        • RuntimeExceptionRuntimeException:是那些可能在Java虛擬機正常運行期間拋出的異常的超類。

        如果您想了解

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
        主站蜘蛛池模板: 精品无码日韩一区二区三区不卡| 国产精品国色综合久久| 亚洲伊人久久精品影院| 人人妻人人澡人人爽人人精品97 | 久久青草国产精品一区| 国产精品亚洲w码日韩中文| 亚洲国产精品综合久久一线| 精品视频一区二区三三区四区| 精品福利一区二区三| 日韩精品系列产品| 国产精品毛片a∨一区二区三区| 中文字幕无码精品三级在线电影| 成人区精品一区二区不卡| 亚洲精品国产高清不卡在线| 久久96国产精品久久久| 久久久久久亚洲Av无码精品专口| 中文精品久久久久国产网址| 国产精品视频色拍拍| 国产亚洲精品自在线观看| 99久久精品国产一区二区| 国产精品一久久香蕉国产线看| 无码欧精品亚洲日韩一区夜夜嗨| laowang在线精品视频| 国产精品兄妹在线观看麻豆| 久久精品亚洲中文字幕无码麻豆| 国内精品免费久久影院| 国产精品哟女在线观看| 999久久久国产精品| 无码精品国产一区二区三区免费| 国产成人精品免费大全| 99久久精品国产综合一区| 精品无码久久久久久尤物| 人妻少妇精品视频一区二区三区| 国产999精品久久久久久| Aⅴ精品无码无卡在线观看| 91精品国产福利在线观看麻豆| 精品无人区一区二区三区| 精品日本一区二区三区在线观看| 国产精品久久久久9999高清| 真实国产乱子伦精品视频| 亚洲AV无码久久精品狠狠爱浪潮|