From: "Юрий Соколов" Date: 2014-07-27T20:03:01+04:00 Subject: [ruby-core:64076] Re: [ruby-trunk - Feature #6739][Open] One-line rescue statement should support specifying an exception class --001a11c3536ade196604ff2ef0b2 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable do_something rescue SomeError with puts "SomeError occured" 16.07.2012 1:50 =D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D0=BE=D0=B2=D0=B0=D1=82=D0= =B5=D0=BB=D1=8C "Quintus (Marvin G=C3=BClker)" =D0=BD=D0=B0=D0=BF=D0=B8=D1=81=D0=B0=D0=BB: > > Issue #6739 has been reported by Quintus (Marvin G=C3=BClker). > > ---------------------------------------- > Feature #6739: One-line rescue statement should support specifying an > exception class > https://bugs.ruby-lang.org/issues/6739 > > Author: Quintus (Marvin G=C3=BClker) > Status: Open > Priority: Normal > Assignee: > Category: core > Target version: 2.0.0 > > > Hi there, > > When wrapping up a single line inside a begin/rescue block I feel > constantly annoyed that I have to create a whole lot of bloated code just > to rescue from a specific exception. For example: > > begin > File.read("myfile.txt") > rescue Errno::ENOENT > puts "No file there" > end > > Now it's possible to do this: > > File.read("myfile.txt") rescue puts "No file there" > > But this forces me to rescue from StandardError which is not really what = I > want, because it swallows exceptions I'd rather have wanted to see, e.g. = if > I mistyped `File.read' as `File.raed' this would be swallowed as well. I > know it is possible to compress the multiline statements above into a > single line by using semicolons, but it's better to avoid them as they > decrease readability. > > So my suggestion is to add something like the following syntax to Ruby: > > File.read("myfile.txt") rescue Errno::ENOENT, puts "No file there" > > This way it is more consise than having to write five lines (instead of > just one) and still reads good (as opposed to the semicolon trick). Maybe > the syntax isn't ideal as the comma operator is already used elsewhere, b= ut > the general idea should be clear though. > > Valete, > Marvin > > > -- > http://bugs.ruby-lang.org/ > > --001a11c3536ade196604ff2ef0b2 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable

do_something rescue SomeError with puts "SomeError occu= red"

16.07.2012 1:50 =D0=BF=D0=BE=D0=BB=D1=8C=D0=B7= =D0=BE=D0=B2=D0=B0=D1=82=D0=B5=D0=BB=D1=8C "Quintus (Marvin G=C3=BClke= r)" <sutniuq@gmx.net> =D0= =BD=D0=B0=D0=BF=D0=B8=D1=81=D0=B0=D0=BB:

Issue #6739 has been reported by Quintus (Marvin G=C3=BClker).

----------------------------------------
Feature #6739: One-line rescue statement should support specifying an excep= tion class
https:= //bugs.ruby-lang.org/issues/6739

Author: Quintus (Marvin G=C3=BClker)
Status: Open
Priority: Normal
Assignee:
Category: core
Target version: 2.0.0


Hi there,

When wrapping up a single line inside a begin/rescue block I feel constantl= y annoyed that I have to create a whole lot of bloated code just to rescue = from a specific exception. For example:

=C2=A0 begin
=C2=A0 =C2=A0 File.read("myfile.txt")
=C2=A0 rescue Errno::ENOENT
=C2=A0 =C2=A0 puts "No file there"
=C2=A0 end

Now it's possible to do this:

=C2=A0 File.read("myfile.txt") rescue puts "No file there&qu= ot;

But this forces me to rescue from StandardError which is not really what I = want, because it swallows exceptions I'd rather have wanted to see, e.g= . if I mistyped `File.read' as `File.raed' this would be swallowed = as well. I know it is possible to compress the multiline statements above i= nto a single line by using semicolons, but it's better to avoid them as= they decrease readability.

So my suggestion is to add something like the following syntax to Ruby:

=C2=A0 File.read("myfile.txt") rescue Errno::ENOENT, puts "N= o file there"

This way it is more consise than having to write five lines (instead of jus= t one) and still reads good (as opposed to the semicolon trick). Maybe the = syntax isn't ideal as the comma operator is already used elsewhere, but= the general idea should be clear though.

Valete,
Marvin


--
http://bugs.ruby-l= ang.org/

--001a11c3536ade196604ff2ef0b2--