我正在構建的ASP.NET應用程序中實現企業庫異常處理應用程序塊。我打算通過將下面的代碼在我的Global.asax.cs來處理未捕獲的應用程序異常:在ASP.NET中使用企業庫異常處理應用程序塊 - 代碼審查
protected void Application_Error()
{
Exception error = Server.GetLastError();
Exception errorToThrow;
if (ExceptionPolicy.HandleException(error, "Application Error", out errorToThrow))
{
if (errorToThrow != null)
throw errorToThrow;
}
else
Server.ClearError();
}
我相信這將努力處理政策的各種後處理操作(無,NotifyRethrow,ThrowNewException )但我想知道是否有人看到這個實現的重大問題。
我的回答,用「鐵磨鐵」的方式: 1)我喜歡關於HttpUnhandledException的觀點。我會包括那張支票。 2)由於你提到的原因,我也沒有看到PostHandlingAction = None策略的價值,但我會將這個問題推遲到政策而不是這裏。 3)根據我對vladhorby的回答,我未能指定我將customErrors配置爲根據所產生的錯誤的HTTP狀態代碼進行重定向,無論是原始錯誤還是重新拋出的錯誤。 4)我認爲重新拋出異常並沒有考慮到notifyRethrow場景。我錯過了什麼嗎? – 2009-11-18 17:42:57
第3點是主觀的 - 我寧願把所有東西放在一起。對於第4點......好吧,我看到......你正在使用一個customError標籤來處理來自你的處理程序的未處理的異常,並讓NotifyRethrow沒有處理程序只是冒泡到那個處理程序。 :) – 2009-11-18 20:08:39
爲您的第一個最後的筆記+1,我意外地將該錯誤引入到一個網站之前,無法弄清楚爲什麼Firefox一直告訴我,我的網頁將無限重定向。 – 2010-02-23 15:56:36