在 do 循环和条件语句中救援 ruby

rescue inside do loops and conditionals ruby

我有以下代码主体,理论上应该修复嵌套条件块内的错误。然而;它不工作。我尝试在两个块内移动 rescue 和 begin 语句,但都不起作用。

begin
  @acceptrecent = Accept.where("buyer_id = ? OR localbid = ?", current_user, current_user).order(created_at: :desc).limit(5)
  @offersrecent = Offer.where(buyer_id:current_user, offerstat: true).order(updated_at: :desc).limit(20)
  @buyer = Buyer.find(current_user)
  @acceptrecent.each do |item|
    unless item.processed.present?
      item.cart.nil? ? tracker = TrackDefault.new : tracker = USPS::Request::TrackingFieldLookup.new(item.cart.track_number,1).send!
      item.status = tracker.status
      item.save
    end
  end
rescue USPS::Error => err
  tracker = TrackDefault.new
end

问题是当出现异常时,执行跳转到救援部分,因此跳过了所有必要的代码。尝试将 begin...rescue...end 块放在循环中:

@acceptrecent = Accept.where("buyer_id = ? OR localbid = ?", current_user, current_user).order(created_at: :desc).limit(5)
@offersrecent = Offer.where(buyer_id:current_user, offerstat: true).order(updated_at: :desc).limit(20)
@buyer = Buyer.find(current_user)
@acceptrecent.each do |item|
  unless item.processed.present?
    tracker =
      begin
        item.cart ? USPS::Request::TrackingFieldLookup.new(item.cart.track_number,1).send! : TrackDefault.new
      rescue USPS::Error => _
        TrackDefault.new
      end

    item.status = tracker.status
    item.save
  end
end