Как сделать ваши Ruby-скрипты надежными с правильной обработкой исключений - PullRequest
1 голос
/ 21 июля 2010

Я не спрашиваю о том, как использовать оператор begin..rescue в Ruby.Скорее, я спрашиваю, как вы выясните, о чем стоит беспокоиться.Я знаю, что некоторые хардкорные люди, вероятно, просматривают документацию / код, чтобы найти каждую возможную ошибку, и имеют код, который корректно обрабатывает все случаи.Но это может зайти слишком далеко, если вы не пишете что-то «критически важное».

Итак, как вы узнаете, какие ошибки следует искать?Обычно я просто запускаю свой код, и если он останавливается из-за ошибки, я добавляю оператор begin..rescue.Я уверен, что должен быть лучший способ.Я просто запустил скрипт для импорта данных в базу данных для некоторых файлов, и он остановился через час (много файлов, не спрашивайте) из-за какой-то ошибки, о которой я не мог знать, что произойдет.Весьма раздражает, и я уверен, что я виноват в том, что не написал более надежный код.Как мне это сделать?

1 Ответ

2 голосов
/ 21 июля 2010

Я не уверен, что всегда можно предвидеть исключения, предварительно не испытав их. Теперь, когда вы знаете, что базы данных иногда дают сбой, вы можете добавить лучшую обработку исключений для этого в будущем, но опыт - единственный настоящий учитель в этом смысле.

Тем не менее, я думаю, что вы, возможно, слишком быстро пишете свои собственные обработчики ошибок. Для производственного кода, очевидно, существуют определенные сценарии, которые вы хотите легко отследить и показать хорошее сообщение об ошибке (например, слишком большое количество соединений с базой данных), но иногда разрешение всплывающего сообщения об ошибке является фактически самой надежной вещью Сценарий может сделать. Если что-то не так с моей настройкой rubygems, из-за которой ваш драгоценный камень высыпает ошибки, я не хочу, чтобы вы скрывали их за "что-то пошло не так!"; Я предпочел бы увидеть саму ошибку, чтобы я мог приступить к работе.

Перехватывайте действительно важные ошибки, с которыми можно что-то сделать, например, несколько раз повторить попытку HTTP-соединения, прежде чем сдаться. Помимо этого, однако, если вы ничего не можете сделать с этой ошибкой, позорить ее не стыдно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...