亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

ASP.NET的錯誤處理機制

2019-11-18 17:04:58
字體:
來源:轉載
供稿:網友

        對于一個Web應用程序來說,出錯是在所難免的,因此我們應該未雨綢繆,為可能出現的錯誤提供恰當的處理。事實上,良好的錯誤處理機制正是衡量Web應用程序好壞的一個重要標準。試想一下,當用戶不小心在瀏覽器輸入了錯誤的URL或者當用戶提供了一些信息導致程序出錯的時候,如果我們沒有對這些情況進行處理,而是任由404或是500的錯誤頁面甚至出錯的堆棧信息呈現在用戶面前,這無疑會把一些用戶給嚇跑。所以,在我們開發Web應用程序的時候,應該對錯誤處理機制有充分的了解。
   
        讓我們回到asp.net上來,先提兩個問題讓大家思考一下:ASP.NET為我們提供了幾種錯誤處理機制呢?如果同時采用了幾種錯誤處理機制,它們之間是否存在一定的優先級呢?帶著這個問題,我們先來看一下我們最常見的Web.Config文件:

<?xml version="1.0"?>
    <configuration>
        <system.web>
            <customErrors mode="On" defaultRedirect="GenericErrorPage.htm">
                <error statusCode="403" redirect="Error403.htm" />
                <error statusCode="404" redirect="Error404.htm" /> 
            </customErrors>
        </system.web>
    </configuration>


對于<customErrors>這個設置項,我想無需多言了,詳情可以參考MSDN的。第一種錯誤處理機制——使用Web.Config的<customErrors>配置項應該是大家最常用的。
        接著,我們再看另外一個也很常用的文件:Global.asax。提到這個文件,大家想到了什么呢?對,就是跟兩大Web應用程序對象(application、session)相關的事件了。在這些事件當中,有一個屬于Application范疇的與錯誤相關的事件——Error,而對應的事件處理方法就是Application_Error了。顧名思義,這個事件處理方法在應用程序級別錯誤發生的時候就會被調用,因此你可以在這個方法中添加代碼來對錯誤進行處理,如下所示:

PRotected void Application_Error(object sender, EventArgs e) {
    Exception objErr = Server.GetLastError().GetBaseException();
    Response.Write("Error:" + objErr.Message);
    Server.ClearError();
}

在這里,大家要注意最后一句代碼的使用Server.ClearError(),為什么要使用這句代碼呢?如果不用又會怎樣呢?在這里我又先賣個關子。好了,第二種錯誤處理機制——使用Global.asax中的Application_Error事件處理方法也登臺亮相了。

        以上這兩種錯誤處理方法都可以說是全局性的,一個源自應用程序配置文件,一個則是必須放在應用程序根目錄下的Global.asax文件的事件處理方法。與全局相對的就是局部,所以我們很自然的就會想:有沒有應用于局部——某個頁面的錯誤處理機制呢?答案是“有的”,而且還有兩種————使用ErrorPage屬性以及使用Page_Error事件處理方法。對于第一種機制,你幾乎可以在任何時候設置ErrorPage屬性,從而確定頁面發生錯誤的時候會重定向至哪個頁面;對于第二種機制而言,它與Application_Error事件處理方法是很類似的,只不過被觸發的時機不同而已。以下是具體的兩個例子:

<script language="C#" runat="server">
    protected void Page_Load(object sender, EventArgs e) {
        this.ErrorPage = "ErrorPage.htm";
       
    }  
</script>
 

protected void Page_Error(object sender, EventArgs e) {
    Exception objErr = Server.GetLastError().GetBaseException();
    Response.Write("Error:" + objErr.Message);
    Server.ClearError(); //同樣要注意這句代碼的使用
}   

        至此,四種錯誤處理機制已經悉數登場,是時候給它們排個名次了。從優先級高到低排序:Page_Error事件處理方法 > ErrorPage屬性 > Application_Error事件處理方法 >  <customErrors>配置項。雖然排序是這樣,但是這個排序之間又有微妙的關系。首先,要讓ErrorPage屬性能夠發揮作用,<customErrors>配置項中的mode屬性必須設為"On";其次,雖然Page_Error事件處理方法排在最前面,但是,如果少掉了Server.ClearError()方法的話,仍然會引發優先級較低的錯誤處理,這種情況對于Application_Error事件處理方法也是如此。順序是排好了,但是順序卻不是最重要的問題,甚至可以說是沒有太多意義的問題,因為在很多情況下,你可能并不會混合使用這四種處理機制。我想,最重要的問題還是在如何選用這些錯誤處理機制上。對于這個問題,希望有經驗的朋友能夠談談看法。
  
        好了,關于ASP.NET的四種錯誤處理機制就介紹到這里,也該說說自己的一些感受了。ASP.NET的設計者確實站在開發者的角度作了周全的考慮,因此提供了多達四種的錯誤處理機制供我們選用,這一點是值得稱道的。但是套用一句廣告詞——多則惑,我們也會被這么多的錯誤處理機制弄得有些頭暈。對照J2EE領域中的錯誤處理,我們可以發現會相對簡單一些。首先是對應<customErrors>的設置,我們也可以從J2EE項目最常用的web.xml文件中找到類似的配置項:<errorPage>;其次,在J2EE的領域中,Page并不是一個重要的實體而且事件驅動模型也不是必需的,所以我還真的找不到與Application_Error和Page_Error方法對應處理機制;最后,在J2EE的領域中,更多強調的是Request和Response,一旦在邏輯處理中出現了錯誤,我們可以很容易地通過RequestDispatcher將Request分發到相應的錯誤處理模塊中,事實上這是非常靈活的一種處理方式,有興趣的朋友不妨了解一下。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久精品91久久久久久再现| 成人av在线网址| 美日韩精品免费视频| 久热精品在线视频| www.欧美视频| 日韩欧美a级成人黄色| 久久精品中文字幕电影| 日本精品久久久久久久| 成人免费自拍视频| 中国china体内裑精亚洲片| 欧美在线www| 欧美劲爆第一页| 欧美最顶级丰满的aⅴ艳星| 精品一区二区电影| 久久精品国产一区| 久久精品国亚洲| 中文字幕欧美日韩| 国产欧美精品一区二区三区介绍| 中文字幕欧美专区| 中文字幕国内精品| 国产亚洲精品综合一区91| 中文字幕亚洲激情| 亚洲品质视频自拍网| 亚洲国产精品成人va在线观看| 国产区精品视频| 欧美色videos| 亚洲人成亚洲人成在线观看| 丝袜亚洲欧美日韩综合| 国产精品丝袜白浆摸在线| 久久久久久久久91| 日韩欧亚中文在线| 91日韩在线视频| 国产精品旅馆在线| 色午夜这里只有精品| 亚洲福利在线观看| 91最新在线免费观看| 欧洲亚洲女同hd| 亚洲少妇激情视频| 日本免费在线精品| 久久精品视频免费播放| 亚洲第一国产精品| 久久精品久久久久| 亚洲黄色在线看| 成人免费黄色网| 日本精品在线视频| 日韩视频第一页| 欧美在线观看www| 国模私拍一区二区三区| 国产精品视频xxx| 精品久久在线播放| 欧美性极品xxxx娇小| 亚洲色图18p| 国产日本欧美一区二区三区在线| 91高清视频免费观看| 亚洲新声在线观看| 国产亚洲成精品久久| 色偷偷av一区二区三区乱| 亚洲欧美日韩图片| 亚洲2020天天堂在线观看| 九九精品在线观看| 国产91精品视频在线观看| 欧美高清videos高潮hd| 国产精品一久久香蕉国产线看观看| 最近2019年好看中文字幕视频| 国产成人综合av| 精品久久久一区| 日产精品99久久久久久| 久久不射热爱视频精品| 国产亚洲欧洲高清一区| 亚洲自拍偷拍色片视频| 高潮白浆女日韩av免费看| 永久免费精品影视网站| 久久精品2019中文字幕| 久久久久国产视频| 久久久久久久一区二区三区| 伊人久久男人天堂| 亚洲国产精品成人va在线观看| 91在线观看欧美日韩| 久久久久这里只有精品| 亚洲免费电影一区| 亚洲欧美日韩视频一区| 日韩最新中文字幕电影免费看| 日韩av在线影视| 国产精品久久久久久av福利软件| 色噜噜国产精品视频一区二区| 久久久久久久久久久免费精品| 国外成人在线播放| 亚洲直播在线一区| 中文字幕亚洲欧美| 亚洲欧美日本伦理| 亚洲美女又黄又爽在线观看| 自拍偷拍亚洲欧美| 中文字幕亚洲第一| 国产精品视频一| 欧美高清一级大片| 久久激情视频免费观看| 欧美激情aaaa| 亚洲人成免费电影| 最近2019年中文视频免费在线观看| 91av在线免费观看| 91热福利电影| 日韩精品在线电影| 精品久久香蕉国产线看观看亚洲| 久久成人综合视频| 国内精品一区二区三区| 在线观看国产精品日韩av| 欧美老女人性生活| 不卡伊人av在线播放| 国产视频精品一区二区三区| 欧美中文在线观看国产| 亚洲xxxxx| 国产精品一区二区三区成人| 91tv亚洲精品香蕉国产一区7ujn| 国产精品一区二区在线| 国产91精品在线播放| 欧美激情在线狂野欧美精品| 国产精品流白浆视频| 日韩电影免费观看中文字幕| 成人免费自拍视频| 国产美女精品免费电影| 日韩欧美aⅴ综合网站发布| 91在线观看免费网站| 国产精品久久久一区| 中文字幕亚洲第一| 91av在线影院| 日韩福利在线播放| 大量国产精品视频| 日韩在线免费视频| 欧美性一区二区三区| 久久99久久99精品中文字幕| 欧美乱妇高清无乱码| 亚洲欧洲国产伦综合| 高清一区二区三区日本久| 成人精品网站在线观看| 一本色道久久88综合亚洲精品ⅰ| 国产成人在线播放| 久久久久久亚洲精品中文字幕| 精品二区三区线观看| 欧美巨猛xxxx猛交黑人97人| 大荫蒂欧美视频另类xxxx| 日韩免费观看网站| 欧美www在线| 国产精品一区二区三区久久久| 亚洲国产日韩欧美综合久久| 国产欧美一区二区三区在线| 久久国产精品久久久久久| 国产91精品在线播放| 久久91超碰青草是什么| 黄色成人av网| 亚洲第五色综合网| 欧美性做爰毛片| 亚洲男子天堂网| 欧美一区亚洲一区| 成人av在线网址| 欧美性猛交xxxx免费看漫画| 国产日韩欧美中文在线播放| 欧美高清激情视频| 国产精品成人品| 亚洲电影免费观看高清完整版在线观看| 欧美成人精品一区| 国产精品日本精品| 亚洲一区二区三区在线视频| 中文字幕日韩专区| 国产精品三级在线|