Dependiendo de cómo se utiliza la biblioteca, hay diferentes maneras de rescatar la excepción.
En la biblioteca
Suponiendo que ha creado un derivador para acceder a algún tipo de servicio web, puede hacer que la envoltura rescatar la excepción y siempre devuelven un conjunto de datos "seguros".
En la acción
Si se llama a un método específico en la acción y el éxito método es un requisito para la acción, entonces se puede rescatar en la acción. En el siguiente ejemplo rescato el error y muestro una plantilla específica para manejar el problema.
def action
perform_external_call
rescue Timeout::Error => e
@error = e
render :action => "error"
end
En el controlador
Si la llamada al método puede ocurrir en muchas acciones diferentes, es posible que desee utilizar 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
Nunca rescatar 'Exception'. Es un mal hábito de programación. Debe rescatar excepciones específicas o al menos, 'StandardError'. –
"Excepción" tenía la intención de aclarar dónde atrapar el específico, pero tienes razón, ¡esto debería haber sido más claro! :) – xijo
Yo sabía cómo hacer esto con ActiveRecord no encontrado. Simplemente no sabía qué o cómo rescatar ese error en particular. – kgpdeveloper