class RuboCop::Cop::Lint::DuplicateRescueException

Checks that there are no repeated exceptions used in 'rescue' expressions.

@example

# bad
begin
  something
rescue FirstException
  handle_exception
rescue FirstException
  handle_other_exception
end

# good
begin
  something
rescue FirstException
  handle_exception
rescue SecondException
  handle_other_exception
end

Constants

MSG

Public Instance Methods

on_rescue(node) click to toggle source
# File lib/rubocop/cop/lint/duplicate_rescue_exception.rb, line 33
def on_rescue(node)
  return if rescue_modifier?(node)

  node.resbody_branches.each_with_object(Set.new) do |resbody, previous|
    rescued_exceptions = resbody.exceptions

    rescued_exceptions.each do |exception|
      add_offense(exception) unless previous.add?(exception)
    end
  end
end