Start here. This is the direct spoken answer to practice first.
Overview
The code that initiated an expected operation usually has the context to recover; a global handler usually does not.
I handle expected API, validation, and workflow failures where the operation is started so the UI can recover with the right context. Angular's ErrorHandler is for unexpected errors the framework forwards, and a custom handler can report them to observability infrastructure. It should not turn every failure into the same toast or pretend the application recovered when its state may be invalid.