Ловля исключений из базы класса - PullRequest
4 голосов
/ 09 апреля 2010

У меня есть базовый класс, и я хотел бы перехватить все исключения производного класса в базовом классе, возможно ли это?

Вы не будете знать, какие методы получены из производного класса.

Ответы [ 2 ]

2 голосов
/ 09 апреля 2010

Вы должны предоставить более подробную информацию о вашем конкретном сценарии. Однако, если, например, у вас есть базовый абстрактный класс, который предоставляет контракт, и вы хотите перехватить все возможные исключения, создаваемые производными классами при вызове контракта с базовым классом, вы можете сделать что-то вроде этого:

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 голос
/ 09 апреля 2010

Под вызывая класс Вы имеете в виду производный класс или несвязанный класс, вызывающий методы из класса, производного от вашей базы?

Полагаю, вы можете сделать это, превратив свою базу в прокси-класс. См. Пример динамический прокси .

...