3

エラーが発生する次のコード行があります。

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メソッドの構文の何が問題になっていますか?

4

1 に答える 1

19

使用する形式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

より多くの情報を含む質問があります: Ruby で開始、レスキュー、および確認しますか? .

于 2013-08-28T14:41:06.550 に答える