2012-02-10 84 views
0

我正在开发一个依赖于其他团队的API的Ruby应用程序。如何检测API错误?

是否有一个很好的方法来打印错误消息,指出它是从其API错误生成的 ?

例如,有一个名为foo() 所以当我从API提供了一种方法:

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 
+0

我当然不会用手做,当你可以使用一些简单的元编程做到这一点。但我想知道重点是什么;你能否让你的*代码的信息更加明显? – 2012-02-10 22:12:56

回答

0

如果这个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