ruby - 如何检测API错误?

标签 ruby exception-handling error-handling

我正在开发一个依赖于其他团队的API的Ruby应用程序。

有没有一种好的方法来打印错误消息,表明它是
从他们的API错误生成?

例如,API提供了一种称为foo()的方法
所以当我这样做时:

api.foo()

它将返回错误消息:"foo error"在开发代码时,我希望错误消息看起来像:"api: foo error"
这样,当我看到此错误消息时,便知道这是API错误,
不是我的代码的错误。

到目前为止,我能想到的最佳实践是将所有
方法
由API提供,例如:
class apiWrap
  def initialize(api)
    @api = api
  end
  def foo
    begin
      @api.foo()
    rescue => e
      raise "api: #{e.message}"
    end
  end
end

最佳答案

如果在此api中使用了自己的异常类,则可以这样重新定义它:

class APIException
  alias_method :old_exception, :exception
  def exception(message)
    old_exception(message.prepend("api: ")) # for ruby 1.9.3
    old_exception("api: " + message)        # for older ruby
  end
end

关于ruby - 如何检测API错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9235476/

相关文章:

ruby popen3 -- 如何在不重新打开进程的情况下重复写入 stdin 和读取 stdout?

arrays - 使用带有 %w 或 %W 的变量 - Ruby

java - Eclipse 不认为 System.exit 会中断执行

c - Ruby c 扩展 : How can I catch all exceptions, 包括不是 StandardErrors 的东西?

c - C 中的断言和错误检查

error-handling - VB6 出错时 GoTo Line x 或 Exit Do

ruby - 是否可以使用 EventMachine 和 Ruby 1.8 发起多个并行 http 请求

Python 处理特定的错误代码?

vba - 除了自定义错误处理程序之外,如何在使用默认错误处理程序时避免级联

ruby - 弃用 : HTTParty will no longer override `response#nil?` . 这个弃用警告是什么意思?