In brief
try...catch allows us to react to a thrown exception. Processing should lead to clear action, not just hide the problem.
Useful to know
The code in try runs normally until an exception is thrown. Then the control switch to catch, if there is such a block . finally is for steps performed when leaving the structure regardless of the usual success or exception. [1]
For example, an attempt at JSON.parse('{bad}') in try throws SyntaxError. In catch, the application can display "The file is not valid JSON" and terminate the import. This is more useful than continuing with empty data as if the file had been read successfully.
Keep the processing close to the operation whose failure you expect. Empty catch makes it difficult to find the cause. Separate the user message from the technical log entry and do not show secrets in the public interface.
Do not assume that try automatically captures any future asynchronous error. The place and the moment of performance matter. For asynchronous operations, you need to use the appropriate processing of its result.
Sources
For further detail and to check the information: