Change your design. Destructors are not-quite safe places to be, and you are taking wild chances by trying to throw an exception inside of one. Instead, in whatever routine in your program may be responsible for destroying an object, call a "BeforeDestroy" method before actually destroying it. Put your exceptions and other monkey-business there.