[#19457] equality between "a" and Exception.new("a") — Tanaka Akira <akr@...17n.org>

ふと気がついたのですが、

39 messages 2003/02/02
[#19460] Re: equality between "a" and Exception.new("a") — matz@... (Yukihiro Matsumoto) 2003/02/03

まつもと ゆきひろです

[#19473] Re: equality between "a" and Exception.new("a") — Tanaka Akira <akr@...17n.org> 2003/02/04

In article <1044245817.592933.31973.nullmailer@picachu.netlab.jp>,

[#19474] Re: equality between "a" and Exception.new("a") — matz@... (Yukihiro Matsumoto) 2003/02/04

まつもと ゆきひろです

[#19475] Re: equality between "a" and Exception.new("a") — Tanaka Akira <akr@...17n.org> 2003/02/04

In article <1044329220.257740.28127.nullmailer@picachu.netlab.jp>,

[#19476] Re: equality between "a" and Exception.new("a") — matz@... (Yukihiro Matsumoto) 2003/02/04

まつもと ゆきひろです

[#19477] Re: equality between "a" and Exception.new("a") — Tanaka Akira <akr@...17n.org> 2003/02/04

In article <1044331431.138035.28173.nullmailer@picachu.netlab.jp>,

[#19478] Re: equality between "a" and Exception.new("a") — matz@... (Yukihiro Matsumoto) 2003/02/04

まつもと ゆきひろです

[#19479] Re: equality between "a" and Exception.new("a") — Tanaka Akira <akr@...17n.org> 2003/02/04

In article <1044332948.099873.28206.nullmailer@picachu.netlab.jp>,

[#19482] Re: equality between "a" and Exception.new("a") — matz@... (Yukihiro Matsumoto) 2003/02/04

まつもと ゆきひろです

[#19486] Re: equality between "a" and Exception.new("a") — Tanaka Akira <akr@...17n.org> 2003/02/04

In article <1044338964.502066.28474.nullmailer@picachu.netlab.jp>,

[#19491] Re: equality between "a" and Exception.new("a") — matz@... (Yukihiro Matsumoto) 2003/02/04

まつもと ゆきひろです

[#19493] Re: equality between "a" and Exception.new("a") — matz@... (Yukihiro Matsumoto) 2003/02/04

まつもと ゆきひろです

[#19556] compare between String and Exception — Tanaka Akira <akr@...17n.org> 2003/02/12

さらに気が付いたのですが、

[#19514] [Oniguruma] Version 1.7.1 — "K.Kosako" <kosako@...>

ftp.ruby-lang.orgに、onigd20030207.tar.gzを置きました。

19 messages 2003/02/07

[#19548] [PATCH] file.c for (PR#389) and (PR#390) — nobu.nakada@...

なかだです。

20 messages 2003/02/11
[#19572] Re: [PATCH] file.c for (PR#389) and (PR#390) — pegacorn@... 2003/02/14

From: nobu.nakada@nifty.ne.jp

[#19648] Re: SEGV at search_method in eval.c (PR#400) — nobu.nakada@...

なかだです。

13 messages 2003/02/24

[ruby-dev:19601] Re: Errno::EWOULDBLOCK is EAGAIN?

From: Koji Arai <JCA02266@...>
Date: 2003-02-18 15:35:51 UTC
List: ruby-dev #19601
新井です。

In message "[ruby-dev:19600] Re: Errno::EWOULDBLOCK is EAGAIN?"
  on 18 Feb 2003 22:47:05 +0900,
  matz@ruby-lang.org (Yukihiro Matsumoto) wrote:
> まつもと ゆきひろです

> この修正にもかかわらず、EAGAINとEWOULDBLOCKが同時に違うオブ
> ジェクトとして定義されたことはなかったような気がします。昔は

p Errno::EAGAIN.id
p Errno::EWOULDBLOCK.id

ruby 1.6.7 (2002-03-01) [i586-linux]
537742036
537741136

ruby 1.7.3 (2002-10-18) [i586-linux]
537741396
537740496

のように、違うオブジェクトだと思いました。1.6.7 までは、どち
らの例外があがるかは、ruby の実装依存だったので、どちらでも 
rescue できるよう利用者が意識する必要があったのですが、
(ruby-1.8/ext/gdbm/testgdbm.rb にはちょっとだけその名残があ
ります)例外の一致判定の方法を変えることで対処した、1.7 の方
法はうまいなあとは思ってました。

begin
  raise Errno::EWOULDBLOCK
rescue Errno::EAGAIN
  p "rescue #$!"
end

-:2: Errno::EWOULDBLOCK (Errno::EWOULDBLOCK)
ruby 1.6.7 (2002-03-01) [i586-linux]

-:3: warning: instance variable errno not initialized
ruby 1.7.3 (2002-10-18) [i586-linux]
"rescue Errno::EWOULDBLOCK"

-:3: warning: instance variable errno not initialized
ruby 1.8.0 (2003-02-16) [i586-linux]
"rescue Errno::EAGAIN"

> この状態だと === の例外の一致は意味がないわけですが(削る必要
> もないけど)、どっちが良いですかねえ。

新しい仕様だと困ることというのも特にないだろうと思います。
強いて言えば、[ruby-dev:12677] でまつもとさんもおっしゃってた

p Errno::EWOULDBLOCK
ruby 1.8.0 (2003-02-16) [i586-linux]
Errno::EAGAIN

と表示の名前が変わる違和感だけでしょうが、理屈をわかってしま
えばどうということもないです。

p [Errno::EWOULDBLOCK, Errno::EAGAIN].uniq
=> [Errno::EAGAIN]

の結果がシステム依存で困るってこともまあないでしょう。

例外の一致に === を使うこと自体は残しておいてもいいですね。
SystemCallError.=== はなくして良いでしょうね。

個人的には変える必要はなかったと思うのですが、戻す必要も別に
ないなってとこです。今の仕様に変更した経緯は何かあったのでしょ
うか?

# 強いて言えばドキュメントの修正だけが。。

--
新井康司 (Koji Arai)

In This Thread