使用IsLine FrameWork開發ASP.NET程式之六—使用ExceptionProcessProvider異常處理架構(下)

來源:互聯網
上載者:User

    上一期我們向大家介紹了如何配置與記錄異常,下面我將向大家介紹如何配置異常的展示。異常的展示是指系統一旦發生異常,將會以何種樣式返回給終端使用者,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>-&gt;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的配置與使用。

此文已在《軟體報》同步發布,任何個人媒體不得轉載。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.