finally引發的異常丟失問題

finally引發的異常丟失問題

場景一

public void loseException() throws Exception {
    try {
        throw new Exception("Exception A");
    } finally {
        throw new Exception("Exception B");
    }
}

調用 loseException() 你會發現,Exception A 被 Exception B覆蓋掉了。這是很是嚴重的設計缺陷,而且很難察覺這些錯誤。 目前Java還未修正這個錯誤。 其解決辦法是將全部拋出異常的方法都打包同一個try-catch中。設計

場景二

public void loseException2() throws Exception {
    try {
        throw new Exception("Exception A");
    } finally {
        return;
    }
}

這種方法讓你更簡單粗暴的丟失異常,而且不會產生任何輸出。code

相關文章
相關標籤/搜索