2010-07-21 43 views
0

http://geekswithblogs.net/SanjayU/archive/2009/11/06/error-handling-in-asp.net-mvc-1-1-of-a-3.aspx有人可以給我一個想法嗎?這個異常處理

在此URL

..

請前兩步有誰能夠給我解釋一下?

System.Web.Mvc.dll附帶HandleErrorAttribute類,其中包含...等待... HandleError屬性。直到本系列稍後的部分,這些信息並不重要,但HandleErrorAttribute類繼承自FilterAttribute類,並實現了IExceptionFilter接口 - 接口需要一個具有以下簽名的方法。

public virtual void OnException(ExceptionContext filterContext); 

我需要創建接口嗎?

哪裏需要寫OnExceptoin?

感謝

回答

2

你並不需要創建任何接口,也不用擔心OnException方法或者其實施。所有你需要做的是與[HandleError]屬性裝飾你的控制器,就像這樣:

[HandleError] 
public class HomeController : Controller {} 

然後繼續前進,寫這個控制器內部的一些行爲可能會拋出異常,取而代之的是YSOD的(死亡黃屏)您將看到您配置的自定義錯誤頁面。您還需要在你的web.config激活的自定義錯誤:

<system.web> 
    <customErrors mode="On" /> 
</system.web> 

默認情況下,~/Views/Shared/Error.aspx視圖將在例外的情況下,被渲染。你可以定義基礎上被拋出的異常的特定錯誤觀點:

[HandleError(ExceptionType = typeof(ApplicationException), View = "AppErrorPage")] 

意味着如果ApplicationException被拋出,~/Views/Shared/AppErrorPage.aspx觀點將得到渲染。

這就是框架爲您提供的開箱即用功能。如果這不足以滿足您的需求,並且不適合您的特定情況,那麼您可能會開始擔心實施自定義IExceptionFilter

+0

那麼,OnError有什麼意義?方法如何記錄信息? – user354625 2010-07-21 18:27:38

+0

是的,記錄異常是您可能希望編寫自定義錯誤處理程序並實現此方法的一種情況。 – 2010-07-21 18:29:08

+0

您可以繼續閱讀本系列的第2部分:http://sanjayuttam.com/wordpress/index.php/c-sharp/c-sharp-code-examples/error-handling-in-asp-net-mvc- 1-部分-2-的-2 / – 2010-07-21 18:37:24

相關問題