程序try-catch的絕對健壯性之嵌套

寫程序的過程當中,咱們對try-catch在熟悉不過了,捕獲異常進行處理,以保證程序的健壯性。程序員

今日突發一想,若是咱們catch中的代碼異常了怎麼辦?咱們作如下一種假設日誌

static void Main(string[] args) 
{
    try{
        //Code A
    }
    catch{
        //Code B
    }
    finally{
        //Code C
    }
} 

按照咱們平時常常用的,咱們在Code A的位置執行出錯以後,咱們最後可能在Code B進行錯誤處理,而後可能在Code C處寫錯誤日誌。blog

那麼問題來了,若是咱們由於某些不可預測的因素在Code B或者Code C處又出異常了怎麼辦?(雖然這種狀況我沒有遇到過,哈哈)string

那麼程序員以鑽牛角尖的態度實現瞭如下結構class

static void Main(string[] args) 
{
    try{
        //Code A
        try{
            //Code B
        }
        catch{
            //Code C
        }
        finally{
            //Code D
        }
        //Code E
    }
    catch{
        //Code F
    }
    finally{
        //Code G
    }
}

按照這種結構,咱們在Code F和G的位置不寫任何代碼(不寫總不會異常吧?)或者寫上絕對無錯的代碼,主題代碼仍是在Code B的位置,C的位置異常處理,D的位置寫日誌。程序

那麼,就算catch和finally異常了,也會被外層的catch捕獲,這樣是否是就絕對的健壯了?異常

相關文章
相關標籤/搜索