Skip to main content

You are not logged in. Your edit will be placed in a queue until it is peer reviewed.

We welcome edits that make the post easier to understand and more valuable for readers. Because community members review edits, please try to make the post substantially better than how you found it, for example, by fixing grammar or adding additional resources and hyperlinks.

4
  • Wait, if your program recovers, why in the world would the rest of the code care that something happened? Don't leak your abstraction. Commented Aug 28, 2014 at 11:53
  • Not all recovery mechanisms are without side effects. Commented Aug 28, 2014 at 12:23
  • such as? I can't think of an example where the caller could actually do something about that information (see: your destructor failed example, though destructors being able to fail seems worse than not reporting it). Commented Aug 28, 2014 at 13:15
  • That destructor example is from a container, ~Container() has a strong guarantee it won't fail unless ~T() fails. I can't do much about the fact that the ~T() failed, but designing the contracts for a library interface I have some choices. - Just let the exception propagate. - Try to clean up the rest of the container, then throw back up the exception_ptr for the failed destructor(s). - Mask the exceptions (obviously a bad choice). The first option is only allows a hard, noisy fail. The section option allows for soft failing and hard failing if desired.At the moment I'm just propgating. Commented Aug 28, 2014 at 22:37