2012-02-10 55 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