class RuboCop::Cop::Style::RescueStandardError
end
bar
rescue StandardError, SecurityError
foo
begin
# good
end
bar
rescue OtherError
foo
begin
# good
end
bar
rescue StandardError
foo
begin
# good
end
bar
rescue
foo
begin
# bad
# instead of ‘rescue`.
# `explicit` will enforce using `rescue StandardError`
@example EnforcedStyle: explicit (default)
end
bar
rescue StandardError, SecurityError
foo
begin
# good
end
bar
rescue OtherError
foo
begin
# good
end
bar
rescue
foo
begin
# good
end
bar
rescue StandardError
foo
begin
# bad
# `rescue StandardError`.
# `implicit` will enforce using `rescue` instead of
@example EnforcedStyle: implicit
if any error other than `StandardError` is specified.
styles `implicit` and `explicit`. This cop will not register an offense
This cop checks for rescuing `StandardError`. There are two supported
def offense_for_exlicit_enforced_style(node)
def offense_for_exlicit_enforced_style(node) add_offense(node.loc.keyword, message: MSG_EXPLICIT) do |corrector| corrector.insert_after(node.loc.keyword, ' StandardError') end end
def offense_for_implicit_enforced_style(node, error)
def offense_for_implicit_enforced_style(node, error) range = node.loc.keyword.join(error.loc.expression) add_offense(range, message: MSG_IMPLICIT) do |corrector| error = rescue_standard_error?(node) range = range_between(node.loc.keyword.end_pos, error.loc.expression.end_pos) corrector.remove(range) end end
def on_resbody(node)
def on_resbody(node) return if rescue_modifier?(node) case style when :implicit rescue_standard_error?(node) do |error| offense_for_implicit_enforced_style(node, error) end when :explicit rescue_without_error_class?(node) { offense_for_exlicit_enforced_style(node) } end end