ruby-style-guide
ruby-style-guide copied to clipboard
Discourage the use of writer methods with rescued exceptions
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).