Лучшая практика заключается в том, чтобы поместить и rescue
только вокруг определенной части кода, которую вы хотите изменить для поведения по умолчанию для повышения (например, выйти из вашего кода, что может привести к прекращению процесса, если не существует спасения более высокого уровня), и достичь цель, которую вы намеревались.
Что это такое, в зависимости от того, почему вам нужно до begin...rescue
предложение в первую очередь.
Например, если ваши классы являются веб-службой и компонентом этой службы, а цель блока - представить все возникшие ошибки в виде отладки стека в браузере, то внешний веб-сервис слой, где вы должны спасать исключения. Вероятно, вы также должны охватывать большинство, если не всех, возможных типов повышенной ошибки.
В качестве альтернативы, если ваш «внутренний» класс предоставляет доступ к сторонней службе, а спасение позволяет повторить попытку неудачного подключения, блок может быть полностью внутри внутреннего класса. Кроме того, у вас будет только rescue
конкретных сбоев, когда повторение будет иметь смысл.
Спросите себя: если вы выполняете 'спасение' внутри класса, каково будет действие по спасению? Ответ на этот вопрос может помочь вам определить, где будет более логичным местом для этого. Если вы хотите, возможно, различную обработку исключения в зависимости от приложения, вы хотите сделать это вне класса. – lurker