I recently experienced an issue using a couple of third party libraries. My code called library A which called library B. When Library B experienced an error, it would throw an exception; which is the preferred behavior as it doesn't know how the error should be handled. Library A would cleanup its internal resources using RAII in its' virtual destructor.
Since these resources are private to the class in A, I'm using I can't cleanup the resources ahead of time.
Now in a certain situation during the cleanup of classes I'm using in my code, the destructor in A would be called; and that in turn called B and B would throw an exception.
I wanted to catch this exception in my code since I didn't want to have to change the third party library's code. Unfortunately I found that the exception handling code wouldn't propagate the exception back to my code but would cause an abort method to be called.
I ended up changing A's third party code to catch and ignore all possible exceptions.
Since by default gcc 4.8.1 doesn't propagate exceptions through a destructor which of major compilers and versions of these compilers will or will not propagate an exception though a destructor?