do_something rescue SomeError with puts "SomeError occured"
16.07.2012 1:50 ݧ٧ӧѧ֧ݧ "Quintus (Marvin Glker)" <sutniuq / gmx.net>
ߧѧڧѧ:

>
> Issue #6739 has been reported by Quintus (Marvin Glker).
>
> ----------------------------------------
> Feature #6739: One-line rescue statement should support specifying an
> exception class
> https://bugs.ruby-lang.org/issues/6739
>
> Author: Quintus (Marvin Glker)
> 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, but
> the general idea should be clear though.
>
> Valete,
> Marvin
>
>
> --
> http://bugs.ruby-lang.org/
>
>