[#75225] [Ruby trunk Feature#12324] Support OpenSSL 1.1.0 (and drop support for 0.9.6/0.9.7) — k@...
Issue #12324 has been reported by Kazuki Yamaguchi.
6 messages
2016/04/27
[#78693] Re: [Ruby trunk Feature#12324] Support OpenSSL 1.1.0 (and drop support for 0.9.6/0.9.7)
— Eric Wong <normalperson@...>
2016/12/17
k@rhe.jp wrote:
[#78701] Re: [Ruby trunk Feature#12324] Support OpenSSL 1.1.0 (and drop support for 0.9.6/0.9.7)
— Kazuki Yamaguchi <k@...>
2016/12/17
On Sat, Dec 17, 2016 at 01:31:12AM +0000, Eric Wong wrote:
[#78702] Re: [Ruby trunk Feature#12324] Support OpenSSL 1.1.0 (and drop support for 0.9.6/0.9.7)
— Eric Wong <normalperson@...>
2016/12/17
Kazuki Yamaguchi <k@rhe.jp> wrote:
[ruby-core:75246] [Ruby trunk Feature#6739] One-line rescue statement should support specifying an exception class
From:
quintus@...
Date:
2016-04-28 18:32:58 UTC
List:
ruby-core #75246
Issue #6739 has been updated by Marvin Gテシlker.
I noticed we have a keyword already in Ruby that窶冱 used nearly nowhere and could be a nice fit here. Might not be linguistically optimal, but is not too bad: `in`. That keyword is currently only used for the `for` loop and should thus be fairly clear to tell if not used in a `for` loop.
Suggestion 1:
~~~~~~~~~~~~ ruby
File.read("myfile.txt") rescue Errno::ENOENT in puts "No file there"
~~~~~~~~~~~~
Suggestion 2, building on top the "on" example given earlier:
~~~~~~~~~~~~ ruby
File.read("myfile.txt") rescue puts "No file there" in Errno::ENOENT
~~~~~~~~~~~~
A third suggestion, diggin up the `when` suggestion from earlier in an adapted way (like suggestion 2 above):
~~~~~~~~~~~~ ruby
File.read("myfile.txt") rescue puts "No file there" when Errno::ENOENT
~~~~~~~~~~~~
Using `if` here is probably not possible because that would clash with the postcondition modifier.
Greetings
Marvin
----------------------------------------
Feature #6739: One-line rescue statement should support specifying an exception class
https://bugs.ruby-lang.org/issues/6739#change-58376
* Author: Marvin Gテシlker
* Status: Feedback
* Priority: Normal
* Assignee: Yukihiro Matsumoto
----------------------------------------
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:
~~~ruby
begin
File.read("myfile.txt")
rescue Errno::ENOENT
puts "No file there"
end
~~~
Now it's possible to do this:
~~~ruby
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:
~~~ruby
File.read("myfile.txt") rescue Errno::ENOENT, puts "No file there"
~~~
This way it is more concise 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
--
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>