gpt4 book ai didi

ruby - Ruby中正确的错误处理

转载 作者:行者123 更新时间:2023-12-03 08:03:47 27 4
gpt4 key购买 nike

我有一段代码看起来像这样:

def create_page_object(url)
begin
page = Nokogiri::HTML(open(url))
rescue
puts "page not loaded"
end
end

然后我通过以下方式调用它:
result.each do |url|
page = create_page_object(url)
content = make_content(page)
end

现在,在终端中,我看到“页面未加载”,然后Ruby炸毁了我。我怎么说:“如果页面未加载,请停止并转到下一个项目”。

更新:

科学的爆炸定义:
test.rb:70:in `get_title': undefined method `xpath' for nil:NilClass (NoMethodError)
from test.rb:40:in `block (2 levels) in process'
from test.rb:35:in `each'
from test.rb:35:in `block in process'
from test.rb:32:in `upto'
from test.rb:32:in `process'
from test.rb:138:in `<main>'

我相信正在发生的原因是因为尚未加载,没有设置页面变量,该变量为nil并被放入make_content函数中。

最佳答案

救援块返回puts(即nil)的输出,在使用该文档之前,必须确保已拥有文档。还要注意,在救援中,您应该显式返回nil,以弄清楚该分支中返回的方法是什么。我会写:

def create_page_object(url)
begin
page = Nokogiri::HTML(open(url))
rescue
puts "page not loaded"
nil
end
end

result.each do |url|
if (page = create_page_object(url))
content = make_content(page)
end
end

我不知道您的特定需求,但是进行“抢先式”救援通常不是一个好主意。当您有需要做的事情时进行营救,否则将阻止更高级别的工作。

关于ruby - Ruby中正确的错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8362830/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com