Ответ 1
В зависимости от того, как вы используете библиотеку, существуют различные способы спасения исключения.
В библиотеке
Предполагая, что вы создали оболочку для доступа к какой-либо веб-службе, вы можете заставить оболочку спасти исключение и всегда возвращать "безопасные" данные.
В действии
Если вы вызываете конкретный метод в действии, и успех метода является требованием к действию, вы можете его спасти в действии. В следующем примере я могу спасти ошибку и показать конкретный шаблон для решения проблемы.
def action
perform_external_call
rescue Timeout::Error => e
@error = e
render :action => "error"
end
В контроллере
Если вызов метода может возникать во многих разных действиях, вы можете использовать rescue_from
.
class TheController < ApplicationController
rescue_from Timeout::Error, :with => :rescue_from_timeout
protected
def rescue_from_timeout(exception)
# code to handle the issue
end
end