Well, 3rd question. I'm rolling today.
... and bumping against things all the way.
This time, still exceptions. I really feel they haven't quite registered on my brain yet. I hope the "click" will happen some day soon.
I have a few (very few) exceptions that should terminate the program. I throw an exception, for instance, when the database is corrupt or not there. I do it because std::terminate() doesn't guarantee all objects destructors down the stack will be called. So, I compromise and comment that exception class by informing users if they really want to catch, they should rethrow after doing whatever they had to do. But a comment is not part of the code. This is no good.
Is there a better way to do it? How do I force program termination with proper release of ALL resources without having to go back to error codes?