Ruby救援语法错误
Posted
技术标签:
【中文标题】Ruby救援语法错误【英文标题】:Ruby rescue syntax error 【发布时间】:2013-08-31 16:50:50 【问题描述】:我有以下代码行给我一个错误:
rescue Timeout::Error => e
logs.puts("Rescued a timeout error...#e")
email_ids_all.each do |email_delete|
call= "/api/v2/emails/#email_delete/"
uri= HTTParty.delete("https://www.surveys.com#call",
:basic_auth => auth,
:headers => 'ContentType' => 'application/x-www-form-urlencoded', 'Content-Length' => "0"
)
puts "Deleted email #email_delete".green
log.puts("Deleted email #email_delete")
end
abort #abort entire script after deleting emails
end
我收到的错误是这样的:
syntax error, unexpected keyword_rescue, expecting $end
rescue Timeout::Error => e
^
基本上我只是在脚本超时时尝试运行 API 删除调用。尽管我在rescue
的块中放了什么似乎并不重要,但我收到了同样的错误。我在 rescue
方法上的语法有什么问题?
【问题讨论】:
显然你没有begin
在适当的地方。除非您粘贴所有代码,否则我不能确切地说。
也许答案是我根本没有begin
。这是整个代码...
我添加了开始并且脚本工作正常 - 不知道为什么不赞成,但感谢您的帮助。随时发表您的评论作为答案,我会给您信用。
【参考方案1】:
rescue
的使用格式如下:
begin
# Code you want to run that might raise exceptions
rescue YourExceptionClass => e
# Code that runs in the case of YourExceptionClass
rescue ADifferentError => e
# Code that runs in the case of ADifferentError
else
# Code that runs if there was no error
ensure
# Code that always runs at the end regardless of whether or not there was an error
end
这是一个包含更多信息的问题:Begin, Rescue and Ensure in Ruby?。
【讨论】:
很有意义-感谢您的解释,我只是错过了begin
部分。
@LeviStanley 值得注意的是,如果您想拯救所有方法代码,则不需要 begin
关键字。
你的意思是隐式异常块(比如定义方法时)或其他什么?
@LeviStanley 是的,我的意思是隐式异常块。
@MarekLipka 我添加了另一个问题的链接;它包含更多信息,包括提及隐式异常块。以上是关于Ruby救援语法错误的主要内容,如果未能解决你的问题,请参考以下文章