[ruby-core:64018] [ruby-trunk - Bug #10042] Deprecate postfix rescue syntax for removal in 3.0

From: matthew@...
Date: 2014-07-25 22:13:22 UTC
List: ruby-core #64018
Issue #10042 has been updated by Matthew Kerwin.


 On 26/07/2014, [email protected] <[email protected]> wrote:
 > Issue #10042 has been updated by Yui NARUSE.
 >
 >
 > I sometimes use postfix rescue, and often want a new syntax to specify
 > exceptions to rescue.
 >
 
 This was a feature of MOO Code, on which I cut my teeth in the 90s. It
 lead me to create the 'try' gem. I would not be disappointed if the
 gem was made obsolete by a new language feature.
 
 * https://rubygems.org/gems/try
 * https://github.com/phluid61/ruby-experiments/tree/master/try
 
 -- 
   Matthew Kerwin
   http://matthew.kerwin.net.au/

----------------------------------------
Bug #10042: Deprecate postfix rescue syntax for removal in 3.0
https://bugs.ruby-lang.org/issues/10042#change-48032

* Author: Charles Nutter
* Status: Open
* Priority: Normal
* Assignee: 
* Category: core
* Target version: next minor
* ruby -v: 2.1 something
* Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN
----------------------------------------
The postfix rescue notation is convenient...but almost always is a really bad antipattern.

An example of the notation:

    Integer(f) rescue f # returns f if it is not parseable as an Integer

It silently ignores all StandardError raised by a piece of code...which often covers *many* more exceptions than the user *wants* to be ignoring.

It also hides the cost of constructing and throwing away all those ignored exceptions.

I believe Matz has even said in the past that he regrets adding the feature.

In any case, I propose that "rescue nil" should be deprecated with a warning (either always on or only when verbose) and we should plan to remove it in 3.0.

Who's with me?!



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

In This Thread

Prev Next