7
A
cevap
24
Biraz yorum yazacağım. Sen begin
dönmek için retry
kullanabilirsiniz: çalıştığını da bunu manuel olarak öldürmek kadar
begin
doc = Nokogiri::HTML(open(url).read.strip)
rescue Exception => ex
log.error "Error: #{ex}"
retry
end
denemeye devam (ve günlük hataları) edeceğimizi. Muhtemelen istediğin bu değil, çünkü küçük bir hata seni sonsuz bir döngüye gönderecek. Böyle
MAX_ATTEMPTS = 10
doc = nil
begin
doc = Nokogiri::HTML(open(url).read.strip)
rescue Exception => ex
log.error "Error: #{ex}"
attempts = attempts + 1
retry if(attempts < MAX_ATTEMPTS)
end
if(doc.nil?)
# Do something about the persistent error
# so that you don't try to access a nil
# doc later on.
end
şey birkaç kez deneyin ve sonra vazgeçeceğini: o etrafında kolay bir yolu da, diyelim ki, 10 kez deneyin ve sonra vazgeçmek izin vermektir. Bir sonraki denemeden önce biraz beklemek ya da hemen pes etmemeyi, bekleyip tekrar denemeyi veya hemen yeniden denemeyi seçmek için istisna (muhtemelen birden çok rescue
blok ile) incelemek isterseniz, numaralı çağrıyı retry
numaralı telefondan arayabilirsin. Her şeyden
Öncelikle bu kolay arıza giderme –
sağlayabilecek gibi (bu doc = Nokogiri :: HTML .read.strip 'doc = open (URL) ?: demek Nokogiri içine geçişini separetly url açmaya doc) ' – Sayuj
Hayır demek istediğim' data = open (url) .read.strip' sonra bir sonraki satırda 'doc = Nokogiri :: HTML (data)' –