获取.NET MVC以完全忽略错误

时间:2016-05-24 03:05:18

标签: c# .net asp.net-mvc

我的ASP.NET MVC应用程序中有一个遗留库,它引发了许多我需要忽略的异常。我忽略了Application_Error中的这些异常,如此

protected void Application_Error()
{  
    if (exception is PolicyViolationException)
    {              
        Response.Clear();
        Server.ClearError();
    }
}

我知道这是代码味道,但我现在无法做很多事情。

有没有办法阻止他们甚至到达Application_Error?

1 个答案:

答案 0 :(得分:3)

使用Wrapper类(适配器模式)。然后,使用包装器类而不是引用旧库。并且包装器可以根据需要处理(或忽略)异常。

class Legacy
{  public void DoThis() 
   { ... }
   public void DoThat()
   { ... }
}

class Wrapper 
{   Legacy _legacy;
    public Wrapper() { _legacy = new Legacy(); }
    public void DoThis()
    {
       try {
           _legacy.DoThis();
       }
       catch (PolicyViolationException exception) {
           //ignore
       }
    }
 ...
}

在这个例子中,我永远不会引用Legacy类。相反,我会引用类Wrapper。然后我不必担心例外情况,因为如果我不想要它们,他们就不会离开Wrapper实例。