[#39420] Marshal.load で例外発生時に Segmentation fault エラー — patamanta@...
金田有二と申します。
5 messages
2009/10/02
[#39421] exception from open-uri — Yusuke ENDOH <mame@...>
遠藤です。
5 messages
2009/10/03
[#39439] [Bug #2179] 1.9.2において block のスコープがおかしいときがある — 益隆 三村 <redmine@...>
Bug #2179: 1.9.2において block のスコープがおかしいときがある
4 messages
2009/10/06
[#39446] Is the maintainer discharging rule approved? and about matrix.rb — Yugui <yugui@...>
Yuguiです。
4 messages
2009/10/08
[#39451] getaddrinfo: Name or service not known (SocketError) in net/ftp — Tanaka Akira <akr@...>
boron で気がついたのですが、net/ftp で login のときに
4 messages
2009/10/09
[#39469] Re: getaddrinfo: Name or service not known (SocketError) in net/ftp
— Shugo Maeda <shugo@...>
2009/10/12
前田です。
[#39453] [BUG: trunk] GC mark bug — SASADA Koichi <ko1@...>
ささだです.
7 messages
2009/10/10
[#39501] [bug:trunk] invalid memory access in 100**900 — Tanaka Akira <akr@...>
以下のように、100**900 を計算すると変なところをアクセスするようです。
4 messages
2009/10/17
[#39506] [Bug:1.9] case 文の式が省略され when 節に配列展開があるときの挙動 — wanabe <s.wanabe@...>
ワナベと申します。
4 messages
2009/10/17
[#39533] [Bug #2263] typo in man/ruby.1 — Narihiro Nakamura <redmine@...>
Bug #2263: typo in man/ruby.1
11 messages
2009/10/24
[#39534] Re: [Bug #2263] typo in man/ruby.1
— Yusuke ENDOH <mame@...>
2009/10/24
遠藤です。
[#39548] [Bug #2291] Net::FTPでソケットをオープンする前にbinary=を呼び出すと落ちる — Akira Matsuda <redmine@...>
Bug #2291: Net::FTPでソケットをオープンする前にbinary=を呼び出すと落ちる
10 messages
2009/10/27
[#39578] [Bug #2308] セーフレベル1の場合、Net::IMAPでSecurityErrorが発生する — Nozomu Kurasawa <redmine@...>
Bug #2308: セーフレベル1の場合、Net::IMAPでSecurityErrorが発生する
5 messages
2009/10/30
[#39579] [Bug #2310] should ensure GVL_UNLOCK_END in rb_thread_blocking_region — _ wanabe <redmine@...>
Bug #2310: should ensure GVL_UNLOCK_END in rb_thread_blocking_region
4 messages
2009/10/30
[#39584] Re: [ruby-cvs:32774] Ruby:r25556 (trunk): * array.c (rb_ary_to_ary): do not use #respond_to? to detect — Nobuyoshi Nakada <nobu@...>
なかだです。
6 messages
2009/10/30
[#39585] Re: [ruby-cvs:32774] Ruby:r25556 (trunk): * array.c (rb_ary_to_ary): do not use #respond_to? to detect
— Yukihiro Matsumoto <matz@...>
2009/10/30
まつもと ゆきひろです
[#39589] Re: [ruby-cvs:32774] Ruby:r25556 (trunk): * array.c (rb_ary_to_ary): do not use #respond_to? to detect
— Yukihiro Matsumoto <matz@...>
2009/10/30
まつもと ゆきひろです
[#39591] Re: [ruby-cvs:32774] Ruby:r25556 (trunk): * array.c (rb_ary_to_ary): do not use #respond_to? to detect
— Nobuyoshi Nakada <nobu@...>
2009/10/30
なかだです。
[#39592] infinite recursive call to C function — Yusuke ENDOH <mame@...>
遠藤です。
17 messages
2009/10/30
[#39596] Re: infinite recursive call to C function
— Yukihiro Matsumoto <matz@...>
2009/10/30
まつもと ゆきひろです
[#39599] Re: infinite recursive call to C function
— Nobuyoshi Nakada <nobu@...>
2009/11/02
なかだです。
[#39601] Re: infinite recursive call to C function
— Yukihiro Matsumoto <matz@...>
2009/11/02
まつもと ゆきひろです
[#39602] Re: infinite recursive call to C function
— Nobuyoshi Nakada <nobu@...>
2009/11/02
なかだです。
[#39603] Re: infinite recursive call to C function
— Yukihiro Matsumoto <matz@...>
2009/11/02
まつもと ゆきひろです
[#39605] Re: infinite recursive call to C function
— Nobuyoshi Nakada <nobu@...>
2009/11/02
なかだです。
[#39608] Re: infinite recursive call to C function
— Yukihiro Matsumoto <matz@...>
2009/11/02
まつもと ゆきひろです
[#39609] Re: infinite recursive call to C function
— Nobuyoshi Nakada <nobu@...>
2009/11/02
なかだです。
[#39610] Re: infinite recursive call to C function
— Yukihiro Matsumoto <matz@...>
2009/11/02
まつもと ゆきひろです
[ruby-dev:39426] Re: exception from open-uri
From:
Yusuke ENDOH <mame@...>
Date:
2009-10-03 11:30:35 UTC
List:
ruby-dev #39426
遠藤です。
2009年10月3日15:48 Tanaka Akira <akr@fsij.org>:
> In article <e0b1e5700910022319w60926de8lc81e8881602a0fc@mail.gmail.com>,
> Yusuke ENDOH <mame@tsg.ne.jp> writes:
>
>> open-uri を使って定期的に Web ページを取得するプログラムを走らせて
>> いると、実にさまざまな例外が投げられうることに気がつきました。
>
> 奇遇なことに、私も似たようなことをやっています。
> samidare というプログラムですが。
なるほど (笑)
>> 1) open-uri が投げうる例外は他にあるでしょうか (Errno::* はいくらでも
>> ありそうですが) 。
>
> 私がやっているもののログをいましらべたら、とりあえず、あげら
> れている以外に
>
> Errno::ECONNREFUSED
> Errno::ENETUNREACH
>
> が見つかりました。
うう、ありがとうございます。とりあえず手元でも対処しておきます。
>> 2) この中で本来投げられるべきでない例外はないでしょうか。EOFError は
>> 少し怪しいと思っています。バグだとしても Net::HTTP か Timeout のバグ
>> だと思いますが。ちなみに再現させる方法はもちろんわかりません。
>
> EOFError は以前なにかの飲み会で青木さんに文句を言った覚えが
> あります。
うーん、redmine に登録すべきか。
>> 3) この状況に対して、open-uri のユーザはどのように対処することが要求
>> されているのでしょうか。4 つ思いつきました。
>>
>> A. StandardError を rescue してまとめて対処する
>
> 私がやっているものをみたら、これでした。
「open-uri を使うときは rescue StandardError でくるむ」という
イディオムが推奨されるわけですかね。
しかし open をブロック付きで使うことを考えると、それは少し不便です。
open("http://...") do |fh|
... # (A)
end
を
begin
open("http://...") do |fh|
... # (A)
end
rescue StandardError
... # (B)
end
とした場合、(A) の中で発生した例外が全部 (B) に拾われてしまいます。
(A) の中にバグがあって例外が投げられた場合などは、(B) で拾わずに外に
投げて欲しいと思います。
そこで提案ですが、open-uri の内部で発生した例外は open-uri の中で
すべて拾って、OpenURI::Error などと言った名前の例外にくるんで投げ
なおすというのはどうでしょうか。
ユーザは OpenURI::Error だけを拾えばいいということになって、気楽
です。
--
Yusuke ENDOH <mame@tsg.ne.jp>