任何人都可以给我一个想法?关于这个异常处理

时间:2010-07-21 18:11:39

标签: asp.net asp.net-mvc

http://geekswithblogs.net/SanjayU/archive/2009/11/06/error-handling-in-asp.net-mvc-1-1-of-a-3.aspx

在此网址中..

前两步可以解释一下吗?

System.Web.Mvc.dll附带了HandleErrorAttribute类,其中包含..等待它... HandleError属性。在本系列的后面部分中,此信息不重要,但HandleErrorAttribute类继承自FilterAttribute类,并实现IExceptionFilter接口 - 该接口需要具有以下签名的方法。

public virtual void OnException(ExceptionContext filterContext);

我是否需要创建界面?

我需要在哪里写OnExceptoin?

感谢

1 个答案:

答案 0 :(得分: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