I see your point, and I completely agree with you in the above example, however the issue only lies when the user code handles errors blindly.

I'd rather take the optimistic approach with friendly code allowing users to handle errors how they see fit in their applications, rather than deciding up front that there's never a valid use of exceptions (as demonstrated in the Installer).

I could imagine there are instances where long running processes (importers and the such) would need to rollback transactions or revert filesystem tasks during error handling, even if the exceptions are simply re-thrown afterwards.

However, if user_error is the convention then I will rewrite it back again. I'm thinking it's probably best to just revert most of my installer changes at this point, so in this case it won't cripple the installer.

I'm probably going to have to give this a rest for a while, since I'm getting busy with other projects.

Have a great evening mate.