exception-safe

How do I describe a method that has no side effects if an exception is thrown during execution?

I just can't remember the terminology used for this and other related properties. EDIT - Maybe such a concept doesn't exist but I remember reading something in Effective C++ (or More Effective C++) where he advocated using swaps to commit changes last in the function because the vector swap functions were guaranteed not to throw an exce...

Exception safety/handling with .Net HtmlTextWriter?

I am using a .Net HtmlTextWriter to generate HTML. try { htw.RenderBeginTag( HtmlTextWriterTag.Span ); htw.Write(myObject.GenerateHtml()); htw.RenderEndTag( ); } catch (Exception e) { GenerateHtmlErrorMessage(htw); } In this example, if an error exception is fired during myObject.GenerateHtml(), I will generate a nice er...

Is this a fine std::auto_ptr<> use case?

Hello all, Please suppose I have a function that accepts a pointer as a parameter. This function can throw an exception, as it uses std::vector<>::push_back() to manage the lifecycle of this pointer. If I declare it like this: void manage(T *ptr); and call it like this: manage(new T()); if it throws an exception pushing the pointe...

Can a stack have an exception safe method for returning and removing the top element with move semantics?

In an answer to a question about std::stack::pop() I claimed that the reason pop does not return the value is for exception safety reason (what happens if the copy constructor throws). @Konrad commented that now with move semantics this is no longer relevant. Is this true? AFAIK, move constructors can throw, but perhaps with noexcept ...

Why does `myvector.push_back(autoPtr.release())` provide the strong exception safety guarantee?

EDIT: I should've mentioned, I was looking at the documentation for Boost's ptr_sequence_adapter and it claims that their adapter for template< class U > void push_back( ::std::auto_ptr<U> x ); is equivalent to doing vec.push_back(autoPtr.release()); and also provides the strong exception guarantee. And then I realized I was confusing t...