程序try-catch的絕對健壯性之嵌套
阿新 • • 發佈:2018-10-01
void ati rgs 假設 主題 我們 catch 平時 sha
寫程序的過程中,我們對try-catch在熟悉不過了,捕獲異常進行處理,以保證程序的健壯性。
今日突發一想,如果我們catch中的代碼異常了怎麽辦?我們做以下一種假設
static void Main(string[] args) { try{ //Code A } catch{ //Code B } finally{ //Code C } }
按照我們平時經常用的,我們在Code A的位置執行出錯之後,我們最後可能在Code B進行錯誤處理,然後可能在Code C處寫錯誤日誌。
那麽問題來了,如果我們因為某些不可預測的因素在Code B或者Code C處又出異常了怎麽辦?(雖然這種情況我沒有遇到過,哈哈)
那麽程序員以鉆牛角尖的態度實現了以下結構
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捕獲,這樣是不是就絕對的健壯了?
程序try-catch的絕對健壯性之嵌套