ruby-style-guide icon indicating copy to clipboard operation
ruby-style-guide copied to clipboard

Discourage the use of writer methods with rescued exceptions

Open viralpraxis opened this issue 10 months ago • 0 comments

ref: https://github.com/rubocop/rubocop/issues/13588

This is a little-known (I believe) and rarely used feature of the rescue operator, which allows assigning an exception using an object's writer method:

Foo = Struct.new(:exception)
foo = Foo.new

begin
  do_something_that_might_raise
rescue => foo.exception # `Foo#exception=` will be called
  Rails.error.report(foo.exception)
  do_something_with_exception(foo.exception)
end

I propose introducing a new cop that detects such patterns and suggests expanding them to

Foo = Struct.new(:exception)
foo = Foo.new

begin
  do_something_that_might_raise
rescue => e
  foo.exception = e # if required
  Rails.error.report(e)
  do_something_with_exception(e)
end

This cop could also support an alternative style that, conversely, suggests using the writer variant (where applicable).

viralpraxis avatar Dec 16 '24 20:12 viralpraxis