Mar*_*ark 9 ruby ruby-on-rails rubocop
我有以下代码:
def payload
begin
@payload ||= Warden::JWTAuth::TokenDecoder.new.call(token)
rescue JWT::ExpiredSignature => e
Rollbar.warning(e)
end
end
Run Code Online (Sandbox Code Playgroud)
通过对一些博客的简要阅读,我应该像上面一样使用开始救援和结束来处理错误,但是我收到了一个多余的“开始”rubocop 警告。
仅在指定可能导致较大块内错误的代码位时才使用 begin 吗?因此它在这里是多余的吗?
提前致谢
编辑:如果我不需要它,它是否写为
def payload
@payload ||= Warden::JWTAuth::TokenDecoder.new.call(token)
rescue JWT::ExpiredSignature => e
Rollbar.warning(e)
end
Run Code Online (Sandbox Code Playgroud)
?
当开始是方法中的第一件事时执行此操作
def payload
@payload ||= Warden::JWTAuth::TokenDecoder.new.call(token)
rescue JWT::ExpiredSignature => e
Rollbar.warning(e)
end
Run Code Online (Sandbox Code Playgroud)
方法体、块体和 lambda 体是隐式异常块。你不需要包裹整个代码的方法体,块状体,或lambda身体在begin
/ rescue
/ else
/ ensure
/end
异常块,因为它已经隐含一个。所以,每当你有类似的东西
def foo
begin
rescue
end
end
Run Code Online (Sandbox Code Playgroud)
或者
foo do
begin
rescue
end
end
Run Code Online (Sandbox Code Playgroud)
或者
-> do
begin
rescue
end
end
Run Code Online (Sandbox Code Playgroud)
你可以用只替换它
def foo
rescue
end
Run Code Online (Sandbox Code Playgroud)
或块和 lambda 的等价物。
归档时间: |
|
查看次数: |
2003 次 |
最近记录: |