That's because you're inexperienced.
> All possible behaviors should be treated on equal footing, using the control structures of your language.
That's impossible if you're dealing with a system composed of multiple interacting abstraction layers.
An error inside a function precondition is not the same as an error crashing a thread of execution, which in turn is not the same as an error in logical consistency communicating between different services.
The "equal footing" you're talking about can only exist if you're dealing with very simple and linear programs.