我有一个rufus调度程序,该调度程序会执行Dropbox请求以检查一次访问密钥和秘密是否每10分钟授权。
如果未经授权,则报告以下例外:
DropboxAuthError in GalleryController#index
#<Net::HTTPUnauthorized:0x7ef04c8>
我在调度程序中具有的代码检测到这是从rufus-scheduler文档中:
def scheduler.on_exception(job, exception)
puts "job #{job.job_id} caught exception '#{exception}'"
end
因为我只想捕获上面的例外,所以我希望能够执行有条件的语句,该语句将异常与一个值进行比较,例如:
def scheduler.on_exception(job, exception)
if exception == "DropboxAuthError"
puts "job #{job.job_id} caught exception '#{exception}'"
end
end
但是,由于例外是一个对象,所以我不能进行比较。
有人有任何想法我可以做到吗?
非常感谢。
cat皮肤的多种方法
if exception.message.match(/DropboxAuthError/)
# ...
end
if exception.is_a?(Net::HTTPUnauthorized)
# ...
end
不要害怕红宝石对象。
请注意,您可以避免您从Rufus-Scheduler文档中选择的全局错误处理,并执行以下操作:
scheduler.every '10m' do
begin
# do the API call...
rescue Net::HTTPUnauthorized => ne
puts "not authorized"
rescue => e
puts "something wrong happened " + e.inspect
end
end
救援对您进行检查的地方。
欢呼。