在 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
我有以下代码主体,理论上应该修复嵌套条件块内的错误。然而;它不工作。我尝试在两个块内移动 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