Rails - Rubocop - 开始 + 救援语法
Rails - Rubocop - Begin + Rescue syntax
我有以下代码:
def payload
begin
@payload ||= Warden::JWTAuth::TokenDecoder.new.call(token)
rescue JWT::ExpiredSignature => e
Rollbar.warning(e)
end
end
通过简要阅读一些博客,我应该像上面那样使用 begin rescue 和 end 来处理错误,但是我收到了多余的 'begin' rubocop 警告。
begin 仅在指定一段可能导致较大块内错误的代码时使用吗?因此这里是多余的吗?
提前致谢
编辑:如果我不需要它,它是否写成
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体是隐式异常块。您不需要将方法主体、块主体或 lambda 主体的 完整代码 包装在 begin
/ rescue
/ else
中/ ensure
/ end
异常块,因为它已经是隐含的一个。所以,每当你有类似
def foo
begin
rescue
end
end
或
foo do
begin
rescue
end
end
或
-> do
begin
rescue
end
end
你可以用
替换它
def foo
rescue
end
或块和 lambda 的等效项。
我有以下代码:
def payload
begin
@payload ||= Warden::JWTAuth::TokenDecoder.new.call(token)
rescue JWT::ExpiredSignature => e
Rollbar.warning(e)
end
end
通过简要阅读一些博客,我应该像上面那样使用 begin rescue 和 end 来处理错误,但是我收到了多余的 'begin' rubocop 警告。
begin 仅在指定一段可能导致较大块内错误的代码时使用吗?因此这里是多余的吗?
提前致谢
编辑:如果我不需要它,它是否写成
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体是隐式异常块。您不需要将方法主体、块主体或 lambda 主体的 完整代码 包装在 begin
/ rescue
/ else
中/ ensure
/ end
异常块,因为它已经是隐含的一个。所以,每当你有类似
def foo
begin
rescue
end
end
或
foo do
begin
rescue
end
end
或
-> do
begin
rescue
end
end
你可以用
替换它def foo
rescue
end
或块和 lambda 的等效项。