I’ve always found C++'s “trend” of handling normal or non-exceptional system errors with exceptions lackluster (and I’m being charitable). Overall trimming things down to (basically) passing around a couple integers and telling the user to check their manual is much better, much less error prone, and much more efficient and deterministic.


as long as people are logging pertinent information sure. but I’ve had the misfortune of working with plenty of programs that return just an error code that means ‘something went wrong initialising subsystem X’ and left it all to the user to figure out what exactly went wrong, with files and where in those files etc. etc.