Rails 6 正确的错误救援和获取错误消息
Rails 6 proper rescue from error and fetch error message
在我的 Rails 6 应用程序中,我想处理外部 API return 给我一个错误并将其传递给 Failure 方法的情况(它是一个 dry-monad method).
def call
response = api.check_applicant_status(id: applicant_id, options: options)
rescue Errors::BadRequestError => e
e.message
result(response: response, error: e.message)
end
attr_reader :applicant_id
private
def result(response:, error:)
if response.present?
Success(response)
else
Failure(error)
end
end
以上代码只有在发生错误时才会起作用。在快乐的道路上(会有适当的回应)整个 class 将 return 来自 response
变量(哈希)的结果,甚至不会触及 result
方法.
我认为 rescue
应该在每个方法的末尾(我猜这是惯例)但在我的情况下,如果路径顺利,它会给出 undefined local variable or method 'e
的错误。
在发生错误时将错误消息传递给 Failure 以及在顺利的情况下将结果(哈希)传递给 Success 的正确方法是什么?
为什么需要私有方法?假设成功除非你救援,然后假设错误对吗?
def call
response = api.check_applicant_status(id: applicant_id, options: options)
Success(response)
rescue Errors::BadRequestError => e
Failure(e.message)
end
在我的 Rails 6 应用程序中,我想处理外部 API return 给我一个错误并将其传递给 Failure 方法的情况(它是一个 dry-monad method).
def call
response = api.check_applicant_status(id: applicant_id, options: options)
rescue Errors::BadRequestError => e
e.message
result(response: response, error: e.message)
end
attr_reader :applicant_id
private
def result(response:, error:)
if response.present?
Success(response)
else
Failure(error)
end
end
以上代码只有在发生错误时才会起作用。在快乐的道路上(会有适当的回应)整个 class 将 return 来自 response
变量(哈希)的结果,甚至不会触及 result
方法.
我认为 rescue
应该在每个方法的末尾(我猜这是惯例)但在我的情况下,如果路径顺利,它会给出 undefined local variable or method 'e
的错误。
在发生错误时将错误消息传递给 Failure 以及在顺利的情况下将结果(哈希)传递给 Success 的正确方法是什么?
为什么需要私有方法?假设成功除非你救援,然后假设错误对吗?
def call
response = api.check_applicant_status(id: applicant_id, options: options)
Success(response)
rescue Errors::BadRequestError => e
Failure(e.message)
end