我的ASP.NET MVC应用程序中有一个遗留库,它引发了许多我需要忽略的异常。我忽略了Application_Error中的这些异常,如此
protected void Application_Error()
{
if (exception is PolicyViolationException)
{
Response.Clear();
Server.ClearError();
}
}
我知道这是代码味道,但我现在无法做很多事情。
有没有办法阻止他们甚至到达Application_Error?
答案 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实例。