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

IsLine Framework 系列之十:ExceptionProcessProvider 異常框架(下)—— 異常展示與超級日誌

     編輯:關於.NET

異常框架的第二大核心職責是異常展示:將技術性錯誤轉化為使用者友善的介面,同時保護敏感資訊不外洩。本文詳細解析 10 種展示模式的配置與效果、友善錯誤頁面的自訂模板、以及日誌模組失效時的「超級日誌」容災機制。

1. 異常展示的三大必要性

  • 降低使用者焦慮,提升體驗
  • 隱藏堆疊追蹤、路徑、程式碼等技術細節,強化安全性
  • 統一管理執行時異常,利於品質把控

2. 10 種展示模式完整對照表

透過 web.config 切換:

<add key="IsLine.ExceptionProcess.Configuration.ProcessStyle" value="ThrowOriginalWithLog" />
模式枚舉值行為終止應用程式記錄日誌備註
ThrowOriginalWithLog拋出原始錯誤頁面 (ASP.NET 預設黃色死機畫面)是是開發階段適用
ThrowOriginalWithoutLog拋出原始錯誤是否—
ThrowFriendlyWithLog拋出自訂友善錯誤頁面是是需額外配置 ILExceptionModel
ThrowFriendlyWithoutLog拋出自訂友善錯誤頁面是否需額外配置 ILExceptionModel
ThrowSimpleWithLog拋出預定義簡單錯誤訊息是是訊息由 FriendlySimpleText 指定
ThrowSimpleWithoutLog拋出預定義簡單錯誤訊息是否—
ShowSimpleWithLog顯示簡單錯誤訊息(不終止,繼續執行)否是適用非關鍵路徑錯誤
ShowSimpleWithoutLog顯示簡單錯誤訊息(不終止)否否—
HideWithLog不顯示任何錯誤,靜默記錄否是生產環境高安全需求
HideWithoutLog不顯示、不記錄,完全吞噬否否極不建議使用

3. 友善錯誤頁面模板配置 (ThrowFriendly 模式專用)

<sectionGroup name="IsLine.ExceptionProcess.Configuration">
  <section name="ILExceptionModel" type="IsLine.Data.Configuration.SuitConfig" />
</sectionGroup>

<IsLine.ExceptionProcess.Configuration>
  <ILExceptionModel>
    <Message>->Message:@Message</Message>
    <Level>->Level:@Level</Level>
    <HelpLink>->Helper:@HelpLink</HelpLink>
    <Source>->Source:@Source</Source>
    <StackTrace>->Stack Trace:@StackTrace</StackTrace>
    <TargetSite>->Trigger:@TargetSite</TargetSite>
    <HResult>->Result Code:@HResult</HResult>
    <EventDate>->Event Date:@EventDate</EventDate>
    <OtherPlus>->Contact Method:</OtherPlus>
  </ILExceptionModel>
</IsLine.ExceptionProcess.Configuration>

佔位符(@Message、@StackTrace 等)將自動替換為實際例外屬性值。

原始錯誤畫面 友善錯誤畫面 簡單預定義錯誤畫面

4. 簡單預定義錯誤訊息配置

<add key="IsLine.ExceptionProcess.ExceptionProcessProvider.FriendlySimpleText" 
     value="The current page has an exception!" />

5. 超級日誌:日誌模組失效時的最後防線

當日誌渲染器(如資料庫連線中斷)發生錯誤導致無法寫入時,啟用超級日誌可自動轉寫入文字檔,直到故障恢復。

<add key="IsLine.ExceptionProcess.ExceptionProcessProvider.IsOpenDebugInfo" value="True" />
<add key="IsLine.ExceptionProcess.ExceptionProcessProvider.DebugInfo" value="C:\IsLineLog\FinallyLog.txt" />
  • 僅支援文字檔輸出
  • 需確保執行身分對目標路徑擁有完整控制權限
  • 日誌模組恢復後自動切回正常渲染器

6. 渲染器整合

異常日誌最終寫入目標由日誌模組的 Render 決定:

<add key="IsLine.ExceptionProcess.Configuration.RenderName" value="OracleUsingSPRender" />

7. 結語

從開發期的「原始錯誤+完整日誌」到生產期的「友善頁面/靜默記錄+超級日誌容災」,IsLine ExceptionProcessProvider 提供了完整的異常展示生命週期管理。配置驅動、模板化、多模式切換,讓異常處理不再是事後補救,而是可預期、可控制的系統能力。

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