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

IsLine Framework 系列之九:ExceptionProcessProvider 異常框架(上)—— 異常記錄與自訂異常模型

     編輯:關於.NET

IsLine Framework 將系統日誌與異常處理分離為獨立模組,異常模組建立在日誌模組之上,視異常為特殊類型的日誌事件。本文解析異常記錄的兩種模式、渲染器整合架構、自訂異常模型的設計原則與實作規範。

1. 架構定位與啟用流程

  1. 先配置 AppLogProvider(參考系列八、七)
  2. 引用命名空間:using IsLine.ExceptionProcess.ExceptionProcessProvider;
  3. 指定異常使用的渲染器:
<add key="IsLine.ExceptionProcess.Configuration.RenderName" value="OracleUsingSPRender" />

渲染器初始化流程:Render 初始化模組 → 載入 AppLog 渲染器 → 載入 Exception 物件。

2. 渲染器配置範例:Oracle 預存程式 + 檔案雙模式

<sectionGroup name="IsLine.AppLog.Configuration">
  <section name="FileRender" type="IsLine.Data.Configuration.SuitConfig" />
  <section name="OracleUsingSPRender" type="IsLine.Data.Configuration.SuitConfig" />
</sectionGroup>

<IsLine.AppLog.Configuration>
  <FileRender>
    <AppenderStyle>File</AppenderStyle>
    <AppenderType>Text</AppenderType>
    <AppenderInf>IsLineLog/Log4Net1.txt</AppenderInf>
    <AppenderContent>->Event Date:@eventDate;->Level:@level;...</AppenderContent>
    <Level>Debug</Level>
  </FileRender>
  <OracleUsingSPRender>
    <AppenderStyle>Oracle</AppenderStyle>
    <AppenderType>StoredProcedure</AppenderType>
    <AppenderInf>IsLine.Data.Configuration.OracleConnectString</AppenderInf>
    <AppenderContent>SP_ADD_ILFWLOG.ADD_ILFWLOG</AppenderContent>
    <Level>Debug</Level>
  </OracleUsingSPRender>
</IsLine.AppLog.Configuration>

切換日誌目標只需修改 RenderName 值(如改為 FileRender),程式碼零修改。

3. 異常記錄兩大模式

3.1 模式一:直接使用 ILException(簡易、需遍歷例外樹)

try {
    string i = "i";
    Response.Write(Convert.ToInt32(i)); // 故意轉型失敗
} catch (Exception ex) {
    var ile = new ILException();
    ile.WriteLog(ex); // 記錄異常
}

3.2 模式二:自訂異常模型(標準 OOP、高效能、量化管理)

設計原則:系統設計階段預先定義所有可能錯誤,建立實體異常模型。

  • 繼承 ExceptionEntity 基類
  • 實作 IExceptionProcess 介面
  • 內部可呼叫 ILException.WriteLog(ex) 實作記錄邏輯

使用方式:

try {
    // 業務邏輯
} catch (MyBusinessException ex) { // 捕獲具體自訂異常
    ex.WriteLog(ex); // 直接記錄,無需遍歷 Exception 樹
}

優勢:效能更高(避免反射遍歷)、安全性更強(量化異常型別)、符合封裝與抽象原則。

4. 核心類別關係圖

日誌模型 ExceptionProcessProvider 類別關係

5. 結語

IsLine 異常框架以「配置驅動渲染器、自訂異常模型量化錯誤、兩種記錄模式兼顧簡易與專業」為核心設計。下一篇將深入異常展示機制、10 種模式切換與超級日誌容災設計。

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