In that case, what point were you trying to make with that long winded post?
Why are you checking the badbit after getting an exception? The whole point of the exception is to deliever the bad news, and alleviate the need to call to bad(). What an awful hodgepodge.
stderr was indeed create with errors in mind, but it's nowadays commonly used for any auxillary non-error output; *nix doesn't have stdaux or stdwarn.
So, it's fine to write to stderr but still return success to a caller.
As you know, loadConfigFileOrDefaults() would unwind then. But that's okay, because the caller expects (as the function is so name) configuration to be loaded from the file or defaults. There's nothing wrong with that, it's all well and expected.If you are serious about "handling" exceptions internally with a log trace, what are you going to do if `getDefaultConfig' raises an exception?
Edit: Though, if getDefaultConfig can throw, it may be appropriate to call it before the warning is reported.