2012-02-10 4 views
0

Я разрабатываю приложение Ruby, которое зависит от API от другой команды.Как я могу обнаружить ошибку 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 
+0

Я, конечно, не сделал бы это вручную, когда вы могли бы это сделать, используя некоторые простые метапрограммы. Но мне интересно, в чем дело; вы могли бы сделать * ваши сообщения * кода более очевидными? –

ответ

0

Если в этом апи использовал свой собственный класс исключений, то вы можете переопределить это так:

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 
Смежные вопросы