簡體   English   中英

Rails - Rubocop - Begin + Rescue語法

[英]Rails - Rubocop - Begin + Rescue syntax

我有以下代碼:

  def payload
    begin
      @payload ||= Warden::JWTAuth::TokenDecoder.new.call(token)
    rescue JWT::ExpiredSignature => e
      Rollbar.warning(e)
    end
  end

從簡短的閱讀幾個博客,我應該使用開始救援和結束處理錯誤,因為我正在上面做,但是我得到一個多余的'開始'rubocop警告。

是否僅在指定可能導致較大塊內的錯誤的代碼時使用? 因此它在這里是多余的嗎?

提前致謝

編輯:如果我不需要它,它是否寫成

  def payload
    @payload ||= Warden::JWTAuth::TokenDecoder.new.call(token)
  rescue JWT::ExpiredSignature => e
    Rollbar.warning(e)
  end

當開始是你方法中的第一件事時,這樣做

def payload
  @payload ||= Warden::JWTAuth::TokenDecoder.new.call(token)
rescue JWT::ExpiredSignature => e
  Rollbar.warning(e)
end

方法體,塊體和lambda體是隱式異常塊。 您不需要在begin / rescue / else / ensure / end異常塊中包裝方法體,塊體或lambda體的整個代碼 ,因為它已經是隱式的。 所以,每當你有類似的東西時

def foo
  begin
  rescue
  end
end

要么

foo do
  begin
  rescue
  end
end

要么

-> do
  begin
  rescue
  end
end

你可以用它替換它

def foo
rescue
end

或塊和lambdas的等價物。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM