Issue #15936 has been reported by kylemacey (Kyle Macey).

----------------------------------------
Feature #15936: on_error in lieu of rescue, raise
https://bugs.ruby-lang.org/issues/15936

* Author: kylemacey (Kyle Macey)
* Status: Open
* Priority: Normal
* Assignee: 
* Target version: 
----------------------------------------
A common bad pattern in ruby is to rescue any exception and accidentally clobber the exception. 

```
begin
  some_method
rescue StandardError
  # 
end
```

Most linters will complain if you write rescues like the code above. However, this could be useful if we want to perform an operation on _any_ error, as long as we re-raise the exception after doing our work.

```
begin
  some_method
rescue StandardError
  job.fail! 
  raise
end
```

Here, though, we run the risk of potentially forgetting to reraise the exception, or having to make exceptions in our linter for an operation that is overall benign.

What would be a thought on using another keyword that doesn't actually _rescue_ an exception, but performs an operation in the event of an error? Similar to `ensure`, but only in the event of an error.

```
begin
  some_method
on_error StandardError
  job.fail! 
end
```

(obviously, someone more creative than me should come up with a better name)



-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>