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. Ignoring it inevitably leads to Something Worse (like data corruption, security vulnerabilities, etc). The only sensible option is to terminate, which is why the language semantics are what they are. The OP's suggestion to litter destructors with try/catch is misguided. That's no way to build reliable systems. -- Eric Niebler Boost.org http://www.boost.org