Если б однозначный ответ на ваш вопрос существовал, он бы был включён в гайды по программированию.
Существует очень много факторов, влияющих на то, как вы должны поступать с исключениями:
1) Вообще их не ловить, пусть об этом заботится вызывающий
2) Ловить и обрабатывать определённые исключения, остальные пробрасывать
3) Ловить, генерить своё, обёртывать в него внутреннее и бросать своё
4) Ловить всё, обрабатывать самостоятельно
5) Душить всё
(и это далеко не полный список).
Определять это должна архитектура приложения и места данного конкретного куска кода в этой архитектуре.
В целом, всегда следует подходить к коду с точки зрения удобства вызывающего. Если вызывающему (коду, пользователю, программе, сервису, приложению, и т. д.) нужен только результат и не важно, что там у вас случилось, то обрабатывать надо самому. Если вызывающему нужен полный контроль - то можно вообще не обрабатывать. Всегда есть какой-то разумный баланс между двумя крайностями, и каждый раз надо решать отдельно. Универсального решения здесь нет.
В крупном проекте есть руководитель/архитектор, который должен задать либо общие правила, либо правила конкретно для вас. Для open source вопрос сложный - в библиотеках обычно исключения не обрабатываются, иногда пробрасываются.
Если вы контролируете код от метода MyMethod и дальше вниз по иерархии вызовов, то решать вообще-то вам. Как вам удобнее, так и поступайте. Если внизу по иерархии другой код, то обычно, пока явно не оговорено обратное, поступать надо так же, как поступает код "снизу" - если бросает/пробрасывает, то и вы делайте так же, если нет - соответственно, и вы обрабатываете.