首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

Effective C# 原則 44:建立應用程式專屬例外類別 (上)

     編輯:關於C語言

例外是遠距離錯誤報告機制

所有錯誤資訊必須封裝在例外物件中。底層錯誤轉換為應用層例外時不得遺失資訊。呼叫端依據具體例外型別決定處理行為:


try { Foo(); Bar(); }
catch (MyFirstApplicationException e1) { FixProblem(e1); }
catch (AnotherApplicationException e2) { ReportErrorAndContinue(e2); }
catch (YetAnotherApplicationException e3) { ReportErrorAndShutdown(e3); }
catch (Exception e) { ReportGenericError(e); }
finally { CleanupResources(); }

缺乏專屬例外的後果

若庫只拋出通用 Exception,呼叫端唯一選擇是掛起/中止程式,或解析 e.TargetSite.Name 猜測錯誤來源:


catch (Exception e)
{
    switch (e.TargetSite.Name)
    {
        case "Foo": FixProblem(e); break;
        case "Bar": ReportErrorAndContinue(e); break;
        default: ReportErrorAndShutdown(e); break;
    }
}

此做法極其脆弱,且無法應對更深層呼叫鏈。庫作者有責任提供豐富例外型別,讓使用者能精準處理。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved