For some programs that might be true. For the big automatons we run, error
recovery is usually not possible without user intervention (meaning the users
change input or program logic). Failing early and hard is usually the most sane
option.
and almost completely non-viable for end-user graphical application
software...
if the app just exits and dumps the user off at the desktop, they are
more likely to have a response like "WTF?!".
better is, at least, to provide a notification error-box "hey, this crap
has died on you.", or more often attempt error recovery, very often
while playing a "ding" sound effect and/or popping up a notification box.
many other types of applications are largely autonomous and will try to
handle any recovery on their own, filling in any holes with a plausible
substitute.
this is much more common in things like games and graphical software
(such as 3D modeling software, ...).
"hey, this 3D model uses a material which can't be loaded?! well, just
use some sort of generic checkerboard placeholder pattern or similar
instead, and maybe print an error message to the in-program console."
but, it doesn't really make much sense to have completely different
infrastructure for command-line tools vs end-user application software,
so usually a general compromise is needed.
most often, this is either some sort of exception mechanism, or
returning status indicators of some sort.