Вы почти никогда не должны ловить исключение верхнего уровня.
В большинстве случаев вы должны поймать и обработать наиболее конкретное возможное исключение, и только если есть что-то полезное, вы можете сделать с ним.
Исключением (ха-ха) является то, что если вы перехватываете для регистрации и перебрасываете исключение, то иногда вполне нормально ловить исключение верхнего уровня, регистрировать его и перебрасывать его.
Вы почти никогда не должны ловить Исключение верхнего уровня и проглатывать его. Это потому, что если вы ловите исключение верхнего уровня, вы не знаете, что именно вы обрабатываете; Абсолютно все, что могло вызвать это, так что вы почти наверняка не сможете сделать ничего, что будет правильно обрабатывать каждый случай отказа. Возможно, есть некоторые сбои, которые вы можете просто захотеть обработать и проглотить молча, но, просто проглотив исключения верхнего уровня, вы также проглотите целую кучу, которые действительно должны были быть выброшены вверх, чтобы ваш код обрабатывал выше. В вашем примере кода вы, вероятно, захотите сделать это обработать SQLException и log + проглотить это; а затем для исключения, войдите и сбросьте его. Это охватывает себя. Вы все еще регистрируете все типы исключений, но вы глотаете только достаточно предсказуемое SQLException, которое указывает на проблемы с вашим SQL / базой данных.
Обычная практика заключается в том, чтобы обрабатывать только все исключения, которые вы можете разрешить в этот момент, если вы не можете разрешить их в этом месте кода, вы позволяете им всплывать вверх. Если вы не можете решить эту проблему на следующем уровне вверх, разрешите продолжить. Если он достигнет вершины необработанным, то покажите пользователю вежливое извинение (возможно, попытайтесь быстро сохранить автоматически) и закройте приложение. Обычно считается, что разрешить приложению продолжать работу после необработанного исключения, поскольку вы не можете предсказать состояние приложения, как что-то исключительное. Лучше просто выключить и перезапустить приложение, чтобы вернуться в ожидаемое состояние.