【发布时间】:2017-01-01 07:25:09
【问题描述】:
我怎样才能用它自己的方法而不是这个来处理异常?
items.each do |item|
begin
url = item.url
page = Nokogiri::HTML(open(url).read)
rescue Exception => e
puts "Couldn't read \"#{ url }\": #{ e }"
else
title = get_title(page)
end
end
类似:
def get_page(url)
begin
Nokogiri::HTML(open(url).read)
rescue Exception => e
puts "Couldn't read \"#{ url }\": #{ e }"
end
end
#and then call:
items.each do |item|
get_page(url)
title = get_title(page)
end
else 子句应该放在哪里?
【问题讨论】:
-
这不是 Nokogiri 问题,而是 Ruby 异常处理问题。
-
@theTinMan 我想是的,这是一个 Ruby 问题。我是否使用了错误的标题或标签?
-
您将其标记为 Nokogiri。虽然代码中提到了 Nokogiri,但它并不重要,因为问题是关于处理异常。如果这是关于处理特定于 Nokogiri 的异常,那么标记 Nokogiri 是有意义的,否则标记 OpenURI 或 Kernel 会更有意义,因为它们提供了
open行为,这会引发读取文件的异常。这一切都是为了理解您的代码以及哪些 gem/libraries 提供了什么。 -
@theTinMan我完全同意你的看法。我不记得我标记为 Nokogiri。是的,OpenURI 标签气体更有意义。谢谢
标签: ruby-on-rails ruby optimization rescue