From: Minero Aoki Date: 2003-02-09T08:18:08+09:00 Subject: [ruby-list:37072] Re: Net::ProtoServerError あおきです。 遅くなりました。 In mail "[ruby-list:37064] Net::ProtoServerError" j.meguro@ntt.com wrote: > めぐろと申します。 > > Net::HTTPを使っていて、InternalServerError(500)から > Net::ProtoServerErrorを受け取りたかったのですが、 > Net::ProtoFatalErrorを受け取ってしまいます。 > > これは正しい動作なのでしょうか? Ruby 1.6 だと FatalError、1.8 だと ServerError が出ますね。 どっちが正しいんだったかな。直感的には ServerError が正しそう ですが、経緯を考えると逆かもしれません。それを忘れて後で変えた 可能性が高いです。 が、しかし、いまさら直しても 1.6 の続きはリリースされるかどうか わからないですし、1.8 の net/http ではそもそも例外が出なくなって いますから、1.6 の現状に合わせようと思います。つまり 1.6 / 1.8 とも 4xx → Net::ProtoServerError 5xx → Net::ProtoFatalError を正式な仕様と決めます。全く直感的ではないですが我慢してください。 また最も幸せな解決方法は、Ruby 1.6 であっても require 'net/http' Net::HTTP.version_1_2 として、新しい仕様で使ってもらうことです。そうすると例外が 出ませんので、このへんのウザい仕様に惑わされずに済みます。 また Internal Server Error に対しては Net::HTTPInternalServerError というように、直感的な名前で振り分けできるのでずっと便利です。 ------------------------------------------------------------------- 青木峰郎