C# 如何在自定义基类上创建OneException事件
我们有两个自定义类(基类和子类),子类继承自基类 当我们在childClass上获得异常时,应该调用基类上的OneException事件 这将类似于MVC控制器OneException事件C# 如何在自定义基类上创建OneException事件,c#,C#,我们有两个自定义类(基类和子类),子类继承自基类 当我们在childClass上获得异常时,应该调用基类上的OneException事件 这将类似于MVC控制器OneException事件 我们将使用日志记录。在一般情况下,这是不可能做到的。MVC OneException之所以有效,是因为框架捕获任何未处理的异常并将其转发给OneException。调用控制器操作的框架代码如下所示: try { controller.SomeAction(); } catch(Exception ex)
我们将使用日志记录。在一般情况下,这是不可能做到的。MVC OneException之所以有效,是因为框架捕获任何未处理的异常并将其转发给OneException。调用控制器操作的框架代码如下所示:
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();
}
}
您可以使用构造捕获异常。唯一的通用异常处理程序(我所知)是。谢谢您的关注,但是我如何在继承的类上实现事件处理?我想在子类的方法中发生异常时调用基类。这个方法不必从基类重写,方法可以属于子类。我强烈建议您阅读我上面提到的概念。在try catch-构造的catch部分,您可以调用基类方法,但我不会这样做。Try-catch构造用于处理异常,这意味着这是正常工作流的异常。考虑组织您的工作流,而不使用异常作为一个“正常”的替代品!