Просто удалите try catch из класса B, если возникнет исключение, он будет привязан к цепочке вызовов, пока не будет обработан.В этом случае вы можете обработать исключение в RunBase, используя существующий блок try catch.
Хотя в вашем примере B не является производным от вашего базового класса Base.Если вы действительно хотите обработать ситуацию, когда исключение выдается в производном классе в его родительском классе, вы можете попробовать что-то вроде:
public class A
{
//Public version used by calling code.
public void SomeMethod()
{
try
{
protectedMethod();
}
catch (SomeException exc)
{
//handle the exception.
}
}
//Derived classes can override this version, any exception thrown can be handled in SomeMethod.
protected virtual void protectedMethod()
{
}
}
public class B : A
{
protected override void protectedMethod()
{
//Throw your exception here.
}
}