从类的基础捕获异常

时间:2010-04-09 09:59:29

标签: c# exception-handling base-class

我有一个基类,我想在基类中捕获派生类的所有异常,这可能吗?

您不会知道派生类的方法是什么。

2 个答案:

答案 0 :(得分:2)

您需要提供有关特定方案的更多详细信息。但是,例如,如果您有一个提供契约的基本抽象类,并且您希望捕获派生类在调用基类契约时抛出的所有可能异常,则可以执行以下操作:

public abstract class Base
{
    protected abstract void InternalFoo();
    protected abstract void InternalBar();

    public void Foo()
    {
        try { this.InternalFoo(); }
        catch { /* ... */ }
    }

    public void Bar()
    {
        try { this.InternalBar(); }
        catch { /* ... */ }
    }
}

答案 1 :(得分:1)

通过调用类,你的意思是派生类,或者从你的基础派生的类调用方法的非相关类?

我想你可以把你的基础变成代理类。请参阅dynamic proxy示例。