Handle exceptions when you can recover, propagate when you can't.
Handle exceptions in the method if you can meaningfully recover or log information. Propagate them when the method lacks enough context to decide recovery, allowing higher-level methods to address them. For instance, in an e-commerce app, handle exceptions related to logging directly, but propagate database connectivity issues to allow system-wide strategies.
Additional Notes
When should you handle exceptions versus propagate them?