The OP there did not pass an extra parameter, but used the return value itself to deliver the exploding return code.
I've used this from time to time as a debugging aid, because it allows me to track down places in my code where I forget error checks. Using the exploding codes in live code is not a good idea however, because they rely on throwing in destructors, which is a bad thing to do.
Re:Exploding Error Codes (C++)
by kevingadd on Wednesday November 10, 2010 @06:07AM
(#1889892)
A better approach for this that I use in my personal applications is to combine the concept of an error code and a result into a single object that records the 'checked' state.
Attempting to fetch a value from one of these result objects will throw if the result object contains an error, which handles the common case, and the less common case - forgetting to check at all - can explode violently as described here. If you want to simply discard the error code or handle it manually, you can just check the failure status of a result object and go about your merry way. It's a nice compromise and it happens to integrate nicely if you're already using futures/promises to represent work.
https://groups.google.com/group/comp.lang.c++.moderated/brow...
The OP there did not pass an extra parameter, but used the return value itself to deliver the exploding return code.
I've used this from time to time as a debugging aid, because it allows me to track down places in my code where I forget error checks. Using the exploding codes in live code is not a good idea however, because they rely on throwing in destructors, which is a bad thing to do.
API documentation: http://library.gnome.org/devel/glib/stable/glib-Error-Report....
Of course, glib being C it cannot provide the same level of checking that C++ can do, so it's quite basic, but also quite nice to work with.
"Those who do not know history are doomed to reinvent CORBA_Environment."
(Although there are few new details, such as the aborting if the dtor determines it wasn't checked.)
Checked exceptions don't give you exception safety for free: they give you boilerplate code, and exception safety is still up to the developer.
(I never bought the argument about exceptions obfuscating control flow, either.)