我正在尝试按照ScottGu的blog
使用动作过滤器属性实现错误处理我的代码如下:
[HandleError]
[HandleError(ExceptionType = typeof(NullReferenceException), View = "CustomError")]
public class ArticlesController : Controller
{
public object OhDearACrash()
{
throw new Exception("Oh Dear");
}
public object NullRefCrash()
{
throw new NullReferenceException();
}
我遇到一个问题,我无法点击CustomError视图,因为我在抛出异常时收到异常
OhDearACrash:用户代码
未处理异常NullRefCrash:NullReferenceException未被用户代码
处理所以默认[HandleError]会选择未处理的异常,它会路由到处理错误的View / Shared / Error.aspx。
如何处理未处理的异常?
答案 0 :(得分:5)
动作过滤器逐个执行。在您的情况下,问题可能是通用的HandleError操作过滤器在特定的之前执行。
您可以通过设置操作过滤器的“订单”属性来影响执行顺序:
[HandleError(Order = 2)]
[HandleError(Order = 1, ExceptionType = typeof(NullReferenceException), View = "CustomError")]
public class ArticlesController : Controller
{
}