我们如何在自定义baseClass上创建OnException事件

时间:2011-11-15 08:11:28

标签: c#

我们有2个自定义类(baseClass和ChildClass),子类继承自baseClass 当我们在childClass上得到一个异常时,应该调用baseClass上的OnException事件

它将像MVC Controller OnException Events

我们将用于记录。

2 个答案:

答案 0 :(得分:0)

在一般情况下,不可能这样做。 MVC OnException有效,因为框架捕获任何未处理的异常并将它们转发给OnException。用于调用控制器操作的框架代码类似于:

try
{
  controller.SomeAction();
}
catch(Exception ex)
{
  controller.OnException(ex);
}

整个实现依赖于负责处理异常的代码的调用者。通过任何代码都可以使用的通用调用,您无法对如何调用类进行任何假设。

如果我们以某种方式可以使所有调用通过通过基类,我们可以做类似的事情:

public class Base
{
  public BlahaMethod()
  {
    try
    {
      DoBlaha();
    }
    catch(Exception ex)
    {
      OnException(ex);
    }
  }

  protected abstract void DoBlaha();

  private void OnException(Exception ex)
  {
    // Handle exception
  }
}

public class Derived
{
  protected virtual void DoBlaha()
  {
    throw new NotImplementedException();
  }
}

答案 1 :(得分:0)

您可以使用try-catch-finally构造捕获异常。唯一的通用异常处理程序(我知道)是unhandled exception handler in the appdomain