嗨,我刚刚有一个关于如何使用 ruby rack 适当地管理异常处理的问题。
我目前正在使用 Sinatra/Rack 构建一个轻量级 API,并且每条路由都可能通过异常(例如缺少参数、无效格式等)。我希望能够捕获所有这些异常并在中间件应用程序中处理它们。我不想在每个 get、post、put、delete 块中捕获或“拯救”(例如 post '/me')
我尝试了类似的方法,其中 ExceptionHandler 位于机架堆栈的顶部。
我错过了什么?
class Api::ExceptionHandler
def initialize(application)
@application = application
end
def call(environment)
@application.call environment
rescue Api::MissingParameterError => parameter
[ 400, { }, [ "parameter #{parameter} missing" ] ]
end
end