使用IsLine FrameWork开发ASP.NET程序之六—使用ExceptionProcessProvider异常处理框架(下)...
上一期我們向大家介紹了如何配置與記錄異常,下面我將向大家介紹如何配置異常的展示。異常的展示是指系統一旦發生異常,將會以何種樣式返回給終端用戶,IsLine FrameWork為開發人員提供了10種不同的展現方式,本期文章會給大家詳細介紹。
??? 對異常的展示管理分為基本異常管理與超級日常管理。基本異常是指編碼造成的異常,超級異常是指在記錄異常的過程中發生的異常,本文將對如何處理這兩種異常展開講解。
??? 一.基本異常展示的方式
??? 如果有以下錯誤代碼:
??? try
??? {
??????? string i = "i";
??????? Response.Write(Convert.ToInt32(i));
??? }
??? catch (Exception ex)
??? {
??????? ILException ile = new ILException();
??????? ile.WriteLog(ex);
??? }
??? 根據以下不同配置信息,頁面有不同的顯示,這個顯示方式根據web.config給出的鍵值決定:
??? <add key="IsLine.ExceptionProcess.Configuration.ProcessStyle" value="ThrowOriginalWithLog"/>
??? 其中,value可以為以下枚舉值:
??? 1.ThrowOriginalWithLog
??? 這種方式的含義是拋出原始錯誤,終止應用程序,并將這種錯誤記錄到異常日志中。
圖6.1 原始錯誤
? 2.ThrowOriginalWithoutLog
這種方式的含義只是拋出原始錯誤,終止應用程序,并不記錄這種錯誤,圖示同上。
? 3.ThrowFriendlyWithLog
這種方式的含義是拋出友好的錯誤信息,終止應用程序,并記錄異常。友好異常信息由自己定義。
圖6.2 拋出友好信息
? 4.ThrowFriendlyWithoutLog
??? 這種方式的含義是拋出友好的錯誤信息,終止應用程序,并不記錄異常,圖示同上。
需要注意的是,使用3、4兩種配置,需要在web.config中添加額外的節點信息,這些信息決定了友好信息的顯示字段與排版:
??? 在<configSections></configSections>中添加以下信息
<sectionGroup name="IsLine.ExceptionProcess.Configuration">
<section name="ILExceptionModel" type="IsLine.Data.Configuration.SuitConfig" />
</sectionGroup>
??? 在</configSections><appSettings>之間加入以下信息
<IsLine.ExceptionProcess.Configuration>
<ILExceptionModel>
<Message>->Message:@Message</Message>
其他配置地段省略。。。
</ILExceptionModel>
</IsLine.ExceptionProcess.Configuration>
? 5.ThrowSimpleWithLog
??? 這種方式的含義是拋出簡單的預定義的錯誤信息,終止應用程序,并記錄異常。拋出的異常內容只有很簡單的信息“The current page has an exception!”,這個預定義信息由以下節點定義,value部分就是頁面顯示的信息:
??? <add key="IsLine.ExceptionProcess.ExceptionProcessProvider.FriendlySimpleText" value="The current page has an exception!"/>
? 6.ThrowSimpleWithoutLog
??? 這種方式的含義是拋出簡單的預定義的錯誤信息,終止應用程序,并不記錄異常,圖示同上。
? 7.ShowSimpleWithLog
??? 這種方式的含義是顯示簡單的預定義的錯誤信息,不終止應用程序,并記錄異常。
??? 這種方式顯示錯誤信息與5、6相同,但是5、6配置形式,如果程序中遇到錯誤則會觸發“throw”,從而導致程序終止運行;而7、8怎會顯示錯誤,程序繼續運行。
? 8.ShowSimpleWithoutLog
這種方式的含義是顯示簡單的預定義的錯誤信息,不終止應用程序,并不記錄異常。
? 9.HideWithLog
這種方式的含義是不顯示任何錯誤信息,不終止應用程序,并將異常信息記錄。
10.? HideWithoutLog
這種方式的含義是不顯示任何錯誤信息,不終止應用程序,并不記錄異常信息。
注意,異常的記錄是日志模塊可以理解為繼承的關系,日志模塊的緩存等特性配置,在異常中仍有效。
至于,異常信息被寫到什么地方,正如我們前面所說到的,它是由日志的Render決定的:
??? <add key="IsLine.ExceptionProcess.Configuration.RenderName" value="OracleUsingSPRender"/>
?? “OracleUsingSPRender”便是日志的Render名稱, Render模型描述了異常記錄位置、格式等信息,詳細請見上一期文章中的內容。
??? 從上文中大家可以看出,通過web.config中的配置信息,用戶只需要修改一個枚舉值,即可改變異常的展現方式,同時決定系統在發生異常后是否繼續運行下去,這對于一個系統很重要,有些時候我們需要系統即使發生異常也要繼續運行,而有些時候我們必須在異常發生時回滾并停止系統運行。使用異常支持模塊,我們將很容易做到這一點。
二.關于超級異常日志
??? 如果在異常記錄的過程中,發生錯誤,這時異常信息不會記錄成功,異常信息自動被忽略,如果管理員希望在日志模塊出現錯誤時,ILFW仍然記錄這些信息,管理員可以打開配置文件中“超級日志”的開關。
??? 當此開關打開后,如果日志模塊出現錯誤(例如數據庫連接中斷),ILFW會自動將當前信息記錄至一個文本文件中,直到導致日志模塊錯誤的因素消失。
在web.config中添加以下節點開啟超級日志功能:
??? <add key="IsLine.ExceptionProcess.ExceptionProcessProvider.IsOpenDebugInfo" value="True" />
以下節點表示超級日志記錄位置:
??? <add key="IsLine.ExceptionProcess.ExceptionProcessProvider.DebugInfo" value="C:\IsLineLog\FinallyLog.txt" />
??? 注意,超級日志只能寫入文本文件,并且使用超級日志需要確保相關賬戶對日志文件具有完全控制權限。
??? 同時需要注意的時,如果您將日志模塊配置為緩存打開,那么記錄異常時也將繼承這一特性,依據緩存大小進行緩存,超過緩存閥值時,在寫入異常信息。
??? 在下一講,我們將會講針對web開發,講解一下緩存、Session、Cookie的配置與使用。
本文轉自Aicken(李鳴)博客園博客,原文鏈接:http://www.cnblogs.com/isline/archive/2010/05/05/ilfw6.html,如需轉載請自行聯系原作者
總結
以上是生活随笔為你收集整理的使用IsLine FrameWork开发ASP.NET程序之六—使用ExceptionProcessProvider异常处理框架(下)...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Xamarin只言片语2——Xamari
- 下一篇: Django使用心得(二)