關於Java異常最常見的八大問題

03ngnntds發表於2019-04-25

1.異常管理的最佳做法

如果可以正確處理異常,則應該被捕獲,否則應該丟擲異常。

2.為什麼try中定義的變數不能用於catch或finally?

try {File file = new File(“path”);FileInputStream fis = new FileInputStream(file);String s = “inside”;} catch (FileNotFoundException e) {e.printStackTrace();System.out.println(s);}

原因是你不知道在try塊中哪裡會丟擲異常。在宣告物件之前丟擲異常是很有可能的。對於這個特定的例子,這是真的。

3.為什麼Double.parseDouble(null)和Integer.parseInt(null)會丟擲不同的異常?

他們實際上丟擲不同的例外 這是JDK的問題。它們由不同的開發人員開發,所以不值得太多思考。

Integer.parseInt(null); // throws java.lang.NumberFormatException: nullDouble.parseDouble(null); // throws java.lang.NullPointerException

4.在Java中常用的執行時異常

這只是其中的一部分。

IllegalArgumentException

ArrayIndexOutOfBoundsException

當條件不滿足時,它們可用於if語句中,如下所示:

if (obj == null) { throw new IllegalArgumentException(“obj can not be null”);

5.我們可以在同一個catch子句中捕獲多個異常嗎?

答案是肯定的。只要這些異常類可以追溯到類繼承層次結構中的同一個超類,就可以只使用該超類。

6.建構函式可以在java中引發異常嗎?

答案是肯定的。建構函式是一種特殊的方法。這是一個程式碼示例。

7.在最後條款中丟擲異常

執行以下操作是合法的:

public static void main(String[] args) {File file1 = new File(“path1”);File file2 = new File(“path2”);try {FileInputStream fis = new FileInputStream(file1);} catch (FileNotFoundException e) {e.printStackTrace();} finally {try {FileInputStream fis = new FileInputStream(file2);} catch (FileNotFoundException e) {e.printStackTrace();}}}

但為了獲得更好的程式碼可讀性,您應該將嵌入式try-catch塊作為新方法進行包裝,然後將方法呼叫放在finally子句中。

8.為什麼開發人員默默地使用異常?

有很多的時間程式碼段會發生如下情況。如果正確處理異常非常重要,為什麼開發人員仍然這樣做?

try { …} catch(Exception e) { e.printStackTrace();}

忽略是很容易的。頻繁出現並不意味著正確。

文章來源:搜尋引擎大全


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69911024/viewspace-2642463/,如需轉載,請註明出處,否則將追究法律責任。

相關文章