You probably throw by pointer (using new
keyword)
throw new MyDerivedException();
and expected to receive a non-pointer type of exception:
EXPECT_THROW(blah, MyDerivedException);
You should throw by value.
throw MyDerivedException(); // notice lack of 'new'