Emil Dotchevski wrote:
On Mon, Sep 16, 2013 at 1:47 PM, Eric Niebler
wrote: On 9/16/2013 2:20 AM, Nathan Ridge wrote:
On 13-09-09 02:57 PM, Niall Douglas wrote:
On 9 Sep 2013 at 13:11, Nevin Liber wrote:
> In C++03 it was always best practice to *always* wrap your > destructors in a try...catch clause.
No; the best practice is not to throw from a destructor.
Sorry, my unclear phrasing again ... by wrapping destructors I specifically meant:
destructor::~destructor() { try { ... } catch(...) { /* do something useful */ } }
Can you elaborate on what "something useful" is in this context?
Log the error, perhaps?
Sure. And then? Don't say, "Quietly swallow the exception." Something Very Bad has happened.
Nothing bad has happened. If something can fail "badly" you shouldn't do it in the destructor.
Or at all. "Very Bad" means "no exception safety guarantee", which is another way of saying "do not use". Stated differently, if the ... throwing is Very Bad, it would still be Very Bad if used outside of a destructor. So you shouldn't ever use it.