
"Bo Persson" <bop@gmb.dk> writes:
"Reece Dunn" <msclrhd@hotmail.com> skrev i meddelandet news:BAY7-F123eo6WutfjDM00010dd8@hotmail.com...
Klaus Nowikow wrote:
Reece Dunn wrote: [snip]
A trick I use when handling HRESULT error codes is to have a class like this (adapted for int error type):
class errorcheck { [snip] public: inline errorcheck( int ec ): error( ec ) { if( ec < 0 ) throw( *this ); }
Careful. Throwing an exception from a constructor means that the object won't be constructed (i. e., does not exist). So you are throwing a non-existing object here.
Or am I wrong?
If I've got the standard correct, the object will be partially constructed up to the point where the exception is thrown. Thus, if this throws an exception, the error member will be set.
No, when the constructor fails any partial construction will be undone by calling the destructors for those subobjects.
Not before the exception object is copied and thrown. -- Dave Abrahams Boost Consulting www.boost-consulting.com