There are several ways. Some non-hypothetical ones below:
* No one notices the change or can't be bothered :
if( !Stdio.read_file("/etc/foo") ) webbapp_report_fatal("Unable to read /etc/foo");
In this case it will go from reporting the error to the web application user to producing a white page, a page with missing content or a 500 error.
* Someone notices but just want to prevent the rest of the framework from failing:
catch { if( !Stdio.read_file("/etc/foo") ) webbapp_report_fatal("Unable to open /etc/foo"); };
Now you won't just get a broken web page, you will also not get anything in the logs that could tell you forgot to start the framework with sufficient permissions.
I could take the first problem as a necessary evil if it lead to improvements, but I can't see any improvement here. You go from easy error management where you can check errno if you want details, to a situation where you have to check the return code and set up a catch, and then decode what kind of error the catch received. And the code gets uglier.