【问题标题】:Get .NET MVC to completely ignore error让 .NET MVC 完全忽略错误
【发布时间】:2016-05-24 11:19:35
【问题描述】:

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

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

我知道这是代码异味,但目前我无能为力。

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

【问题讨论】:

  • 是的,在使用旧库的任何地方捕获它们。让他们冒泡值得权衡吗?只有你能说。
  • 我猜你可以在源代码被调用的地方捕获异常。坦率地说,我认为您目前的方法可能更好。
  • 我当前方法的唯一问题是我使用日志工具 (Stackify) 来捕获未处理的异常,这会阻塞日志。

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


【解决方案1】:

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

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 实例,它们就不会离开。

【讨论】:

    猜你喜欢
    • 2019-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多