您不應該在Try Catch表單中使用異常處理。相反,它應該是
- 頁面級錯誤
- 應用程序級的錯誤
假設你有一個表示層和業務邏輯層/數據訪問層。
在面對業務邏輯中的錯誤後,它將直接移至Application_Error事件下的Glogal.asax.cs文件,而無需返回調用函數。在這裏,您可以登錄該錯誤消息像下面....
HttpContext.Current.Server.GetLastError().InnerException.StackTrace
HttpContext.Current.Server.GetLastError().InnerException.Message
HttpContext.Current.Server.GetLastError().InnerException.Source
HttpContext.Current.Server.GetLastError().InnerException.TargetSite.DeclaringType.FullName
HttpContext.Current.Server.GetLastError().InnerException.TargetSite.DeclaringType.Name
HttpContext.Current.Server.GetLastError().InnerException.TargetSite.DeclaringType.Namespace
在頁面級錯誤的情況下,當務之急是頁面ONERROR覆蓋並最終應用層錯誤事件。這裏也可以記錄錯誤。
我更喜歡Application_error處理程序,因爲如果您有20個模塊,並且需要爲每個模塊創建基類時纔會出現這種情況。代碼冗餘並不好。
現在在Web配置中,您可以編寫代碼以在下面的某個默認頁面上重定向用戶。
<customErrors defaultRedirect="ErrorPage.htm" mode="On">
<error statusCode="404" redirect="ErrorPageNotFound.htm"/>
</customErrors>
您正在使用哪個版本的Visual Studio? (如果有的話) – PedroC88 2012-03-20 15:05:20
硬部分(局部變量)是Gregory A Beamer指出的http://stackoverflow.com/questions/362124/how-to-trace-all-local-variables-when-an-exception-occurs的副本出。 – 2012-03-20 16:10:57
@ PedroC88 - 我正在使用VS 2010 pro – Skadoosh 2012-03-20 18:02:14