I program in Java and I like that methods have * to declare what they exceptions they throw. This makes it very obvious from a consumer standpoint.
* except for runtime exceptions
What Java lacks is a) enough compile time abstraction capabilities to inspect and parametrize exception specifications so that application specific exceptions can be forwarded through generic/framework code and b) a way to defer the checking to runtime (possibly via a special annotation) so that there would be no reason to ever write empty catch blocks.
That and you tend to get code that just "throws Exception" propagated all the way down to main. I know I've done it for little projects at Uni (when I last programmed in Java, 3.0 I think?)
This is about embedded systems. quite often there is no user and no display (for status purposes).
Put differently: without exceptions, each function in your call stack is responsible for error handling of its callees, and for returning the correct error information to its caller. With exceptions, you only need error handling at the catch site.
to have correct behaviour, all error cases need to have defined recovery. in this, error-return === exceptions.
The whole point is to never run in a broken state.... that path leads to expensive misery.
The point of resetting is to clear out bad state... if the condition has no defined recovery process then you cannot continue safely.
I'm not saying to not handle an error... I'm saying to not attempt recovery from undefined errors.
If you don't know what went wrong, don't attempt to 'handle' it... reset.
What is needed is true error recovery thought, not syntax that encourages proper to just put in empty exception handlers.
Your point is arguing for error returns in my view.