關於Java異常10件事兒20170511

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

是的,只要這些異常類可以追溯到類繼承層次結構中的同一個超類,那麼只能使用該超類。

  • java可以在構造器中拋出異常嗎?

是的,構造函數是一種特殊的方法。 這是一個代碼示例。

  • 在finally塊裏拋出異常
    這是可以通過編譯的。
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子句中。

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 {
        methodThrowException();
    }
}
  • return可以在finally塊裏嗎?
    可以。

  • 爲什麼開發者會默默地處理異常?
    下面的代碼出線過很多次,如果正確處理異常非常重要,那麼爲什麼開發人員會繼續這樣寫代碼呢?

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

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

機翻水平,求輕噴
原地址:點這兒

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章