2011-12-12 16 views

Respuesta

6

404 pueden ser manejados con la ayuda del método de not_found como por ejemplo:

not_found do 
    'Site does not exist.' 
end 

500s pueden ser manejados por una llamada al método error con un bloque de, por ejemplo:

error do 
    "Application error. Pls try later." 
end 

Los detalles de el error se puede acceder a través del sinatra.error en request.env como lo siguiente:

error do 
    'An error occured: ' + request.env['sinatra.error'].message 
end 
+0

¿cómo hago para recuperar la excepción si es 500, me refiero a lo que salió mal? Gracias. – Jane

+0

@Jane ver mi respuesta actualizada – maprihoda

4

Tuve problemas para hacerlo funcionar de fábrica en mi entorno de desarrollo. Para que funcione, tuve que configurar show_exceptions como falso en mi configuración de sinatra.

class BaseApp < Sinatra::Base 

    configure { set :show_exceptions, false } 

    error do |err| 
    raise "Error: #{err}" 
    end 

end 

Esta configuración, cuando se establece en true, permite que las páginas de error que muestran traza y la información del entorno cuando se produce una excepción unhanded, pero sólo pude errores personalizados de fuego por su desactivación.

+1

Esta es la respuesta correcta. No funciona sin la línea de configuración. – pmontrasio

+1

En realidad, tanto ': show_exceptions' como': raise_errors' se deben deshabilitar (es decir, establecer en falso) para que el bloque de error genérico (es decir, ninguna clase de excepción o código de estado) se ejecute y devuelva. –

+0

Tenga en cuenta que 'err' en el ejemplo es el mensaje de la excepción, que también se puede obtener por' env ['sinatra.error']. Message'. –

Cuestiones relacionadas