ASP.NET異常處理
異常捕獲,是我們在Coding過程中必須要考慮的。除了使用Try Catch語句之外,更積極的策略是,對於由輸入可能引發的異常在輸入時就進行驗證。
ASP.NET開發中,可以把異常分成幾個層次:過程級別/頁面級別或類級別/應用程式級別。我們通常會在過程級別就採取措施來捕獲異常並處理,以避免
異常向上擴散。過程級別的異常是會向上冒泡至頁面級別,頁面級別的異常也會冒泡至應用程式級別。
在ASP.NET的架構中,對於頁面級別的異常和應用程式級別的異常都提供了捕獲機制。
- 頁面級別可以通過Page_error事件處理過程進行捕獲:
public void Page_Error(object sender,EventArgs e)
{
Exception bjErr = Server.GetLastError().GetBaseException();
string err = "Error Caught in Page_Error event
" +
"
Error in:" + Request.Url.ToString() +
"
Error Message:" + objErr.Message.ToString()+
"
Stack Trace:
" +
objErr.StackTrace.ToString();
Response.Write(err.ToString());
Server.ClearError();
}
- 應用程式級別可以通過Application_error事件處理過程進行捕獲:
protected void Application_Error(object sender, EventArgs e)
{
Exception bjErr = Server.GetLastError().GetBaseException();
string err = "Error Caught in Application_Error event\n" +
"Error in:" + Request.Url.ToString() +
"\nError Message:"+ objErr.Message.ToString() +
"\nStack Trace:"+ objErr.StackTrace.ToString();
EventLog.WriteEntry("Sample_WebApp",err,EventLogEntryType.Error);
Server.ClearError();
//additional actions...
}
注意:Server.ClearError()的作用是把異常從當前層次中銷燬,避免繼續上向擴散。
如果在頁面級別和應用程式級別,異常還是沒有被捕獲。最終將引發應用程式錯誤,這時ASP.NET執行時會採取最後一個步驟來使得程式
異常能以儘可能友好的方式通知客戶端使用者,那就是檢查Web.config中
導向所配置的錯誤頁。
注意:mode屬性有三個可選值:
On:未被處理的異常將使用者重定向到指定的 defaultRedirect 頁。此模式主要用於生產。
Off:使用者收到異常資訊而不是被重定向到 defaultRedirect 頁。此模式主要用於開發。
RemoteOnly:只有在本地計算機上訪問該站點的使用者(通過使用 localhost)才能收到異常資訊。所有其他使用者都被重定向到 defaultRedirect 頁。此模式主要用於除錯。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-631506/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 異常篇——異常處理
- 異常處理
- 深入探究ASP.NET Core異常處理中介軟體ASP.NET
- JSP 異常處理如何處理?JS
- 異常-throws的方式處理異常
- React 異常處理React
- JS異常處理JS
- oracle異常處理Oracle
- Python——異常處理Python
- Python異常處理Python
- ThinkPHP 異常處理PHP
- JavaScript 異常處理JavaScript
- JAVA 異常處理Java
- 異常的處理
- golang - 異常處理Golang
- 異常處理2
- 異常處理1
- Java 異常處理Java
- Abp 異常處理
- JAVA異常處理Java
- 08、異常處理
- SpringMVC異常處理SpringMVC
- 異常處理機制(二)之異常處理與捕獲
- Java 異常表與異常處理原理Java
- restframework 異常處理及自定義異常RESTFramework
- springboot下新增全域性異常處理和自定義異常處理Spring Boot
- NodeJS之異常處理NodeJS
- JAVA_異常處理Java
- React Native 異常處理React Native
- Spring Boot 異常處理Spring Boot
- PHP 核心 - 異常處理PHP
- GRpc異常處理FilterRPCFilter
- python異常捕捉處理Python
- 14. 異常處理
- 異常處理機制
- 異常處理方式throws
- 處理多個異常
- 異常處理全面解析
- Python Selenium異常處理Python