我有一个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
但是因为异常是一个对象,我不能做那个比较。
有没有人知道我该怎么做?
非常感谢。
答案 0 :(得分:0)
许多养猫的方法
if exception.message.match(/DropboxAuthError/)
# ...
end
if exception.is_a?(Net::HTTPUnauthorized)
# ...
end
不要害怕你的Ruby对象。
请注意,您可以避免从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
救援为你做类型检查。
干杯。