我有以下代码:
def payload
begin
@payload ||= Warden::JWTAuth::TokenDecoder.new.call(token)
rescue JWT::ExpiredSignature => e
Rollbar.warning(e)
end
end
通过简短地阅读一些博客,我应该像上面一样使用begin begin和end处理错误,但是我收到了多余的“开始” rubocop警告。
仅在指定可能在较大块中导致错误的代码位时才开始使用?因此,这里是否多余?
预先感谢
编辑:如果我不需要它,它是否写为
def payload
@payload ||= Warden::JWTAuth::TokenDecoder.new.call(token)
rescue JWT::ExpiredSignature => e
Rollbar.warning(e)
end
?
答案 0 :(得分:2)
在开始是您方法中的第一件事时执行此操作
def payload
@payload ||= Warden::JWTAuth::TokenDecoder.new.call(token)
rescue JWT::ExpiredSignature => e
Rollbar.warning(e)
end
答案 1 :(得分:1)
方法主体,块主体和lambda主体是隐式异常块。您无需将方法主体,块主体或lambda主体的整个代码包装在begin
/ rescue
/ else
/ {{ 1}} / ensure
异常块,因为它已经是隐式的。因此,只要您有
end
或
def foo
begin
rescue
end
end
或
foo do
begin
rescue
end
end
您可以仅用
替换它-> do
begin
rescue
end
end
或等效的块和lambda。