using System; namespace TestCase { class Program { public static void Main() { new Foo().DoSomething(); } } public class Foo : Bar> { } public class Bar : Baz { protected override void DoSomethingElse() { try { throw new Exception(); } catch { } } } public abstract class Baz { protected abstract void DoSomethingElse(); public virtual void DoSomething() { DoSomethingElse(); } } }