Looking for an answer for C# and C++. (in C#, replace \'destructor\' with \'finalizer\')
In C++, the answer is no - object's destructor is not called.
However, the destructors of any member data on the object will be called, unless the exception was thrown while constructing one of them.
Member data in C++ is initialized (i.e. constructed) in the same order as it is declared, so when the constructor throws, all member data that has been initialized - either explicitly in the Member Initialization List (MIL) or otherwise - will be torn down again in reverse order.