異常框架的第二大核心職責是異常展示:將技術性錯誤轉化為使用者友善的介面,同時保護敏感資訊不外洩。本文詳細解析 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 | 不顯示、不記錄,完全吞噬 | 否 | 否 | 極不建議使用 |
<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 等)將自動替換為實際例外屬性值。

<add key="IsLine.ExceptionProcess.ExceptionProcessProvider.FriendlySimpleText"
value="The current page has an exception!" />
當日誌渲染器(如資料庫連線中斷)發生錯誤導致無法寫入時,啟用超級日誌可自動轉寫入文字檔,直到故障恢復。
<add key="IsLine.ExceptionProcess.ExceptionProcessProvider.IsOpenDebugInfo" value="True" />
<add key="IsLine.ExceptionProcess.ExceptionProcessProvider.DebugInfo" value="C:\IsLineLog\FinallyLog.txt" />
異常日誌最終寫入目標由日誌模組的 Render 決定:
<add key="IsLine.ExceptionProcess.Configuration.RenderName" value="OracleUsingSPRender" />
從開發期的「原始錯誤+完整日誌」到生產期的「友善頁面/靜默記錄+超級日誌容災」,IsLine ExceptionProcessProvider 提供了完整的異常展示生命週期管理。配置驅動、模板化、多模式切換,讓異常處理不再是事後補救,而是可預期、可控制的系統能力。