[#44562] [Q] el4r に対して(デフォールト以外の)スクリプトの位置を指定する方法 — "ITSUMI ken-ichi" <itsumi.ml@...>
いつみと申します。
4 messages
2008/02/04
[#44568] Q: 動的デバッグ方法 — "morita" <m-morita@...>
こんにちは。もりた と申します。Ruby を使い始めてまだ半年の
13 messages
2008/02/04
[#44578] Ruby初心者が作りました — Kabu and Ruby管理人 <kabu_and_ruby@...>
http://www.geocities.jp/kabuandruby/index.html
26 messages
2008/02/06
[#44674] beginで捉えられないエラー??
— Kabu and Ruby管理人 <kabu_and_ruby@...>
2008/02/22
いろいろやってみたのですが、うまく行かないので質問させてください。
[#44582] [ANN] Rails勉強会@東京 第27回のお知らせ — "MOROHASHI Kyosuke" <moronatural@...>
各位
1 message
2008/02/08
[#44608] Pathname で拡張子を変更する — "5.5" <5.5@...>
5.5 です。つまんない話なのですが…。
6 messages
2008/02/11
[#44615] 勉強会資料 — "Hideo Konami" <konami@...>
小波です。
13 messages
2008/02/12
[#44623] CGIからCのプログラムを実行する <再送 — jtjrb049@...
はじめまして、Hiraiと申します。
7 messages
2008/02/13
[#44627] warningをエラー扱いする方法について、他 — yoshimi <kazuya.yoshimi@...>
初めて投稿させていただきます。吉見と申します。
7 messages
2008/02/13
[#44656] 書籍「オブジェクト指向スクリプト言語 Ruby」 — togawa manabu <togawamanabu@...>
こんにちわ。十河と申します。
6 messages
2008/02/18
[#44662] Net::HTTP について — 大道 裕 <daidou@...2.so-net.ne.jp>
大道です。
6 messages
2008/02/20
[#44664] Ruby で形式手法 — "tadashi nagao" <tadashi.nagao@...>
長尾といいます。
5 messages
2008/02/20
[#44673] RDoc,RDフォーマットの公式文書はどこにあるのでしょうか — konishih@...6.so-net.ne.jp
小西と申します。
4 messages
2008/02/22
[#44679] Hash#<< — "ARAI Shunichi" <arai@...>
Rubyist 九州のあらいです。
7 messages
2008/02/22
[#44691] ”Rubyアプリケーションプログラミング”の伝言サーバの使い方 — "Yangkook Kim" <yangkookkim@...>
キムと申します。オーム社から出版されている書籍、"Rubyアプリケーションプログラミング"のP267~275に掲載されている伝言サーバー&クライアントの利用の仕方がわかりません。質問を要約すると次の2点です。1、サーバーが正常に起動されているかどうかわからない。2、書き込みクライアントで入力をサーバーに送信する方法がわからない。
8 messages
2008/02/24
[ruby-list:44680] Re: beginで捉えられないエラー??
From:
irodori@...
Date:
2008-02-22 08:37:18 UTC
List:
ruby-list #44680
本庄と申します。
At Fri, 22 Feb 2008 14:02:31 +0900,
Kabu and Ruby管理人 wrote:
> KirbyBaseというデータベースに株価データを取り込むようにしたのですが、最初のうちは順調に取り込んでいますが、以下のようなエラーが出てしまいます。
> 全体をbegin ... rescue ... endで括ったりしたのですが、やはりエラーが出てしまいます。
> ライブラリからのエラーのようですが、どういう意味でしょうか? とほほ、、。
エラーの直接の原因については追っていないので分かりませんが、例外につい
ては下記の理由によるものです。
Timeout::Error は Interrupt を継承しているので、元は SignalException
になります。
rescue は捕捉する例外を明示しない場合、StandardError を捕捉するように
なっていますので、この場合例外はキャッチされず、**正しく**落ちます。
タイムアウトを捕捉したい場合は、
begin
...
rescue Timeout::Error
puts 'timeout error'
end
のようにします。
何故タイムアウト例外が発生するのかについては、そのときの各変数の値 (特
に URI) がわからないと何とも言えません。
# 再現するには fetch する数が多すぎるので…
その他いくつか気になった点です。
> 9350.downto(5000) do |meigara|
頻繁にwebサーバにアクセスしているようなのでリクエストの間には sleep を
はさんだほうが良いと思います。
> puts "#{meigara}のデータ取得を開始します。"
meigara を数値として使っているところはないので to_s で最初に文字列に
した方が全体的にすっきりすると思います。
> begin
> Dir::chdir( storedir )
> rescue
> puts "#{storedir}は存在しません。作成します。"
> Dir::mkdir( storedir )
> Dir::chdir( storedir )
> end
先に chdir をして例外をキャッチするのではなく FileTest.exist? や
FileTest.directory? を使うべきです。
> begin
> f = open( yahoourl )
> rescue
> puts 'タイムアウトです。再試行します。'
> retry
> end
例外をキャッチしたらもれなく retry していますが、恒常的なエラーの場合
には無限ループになります。上限を設けるか、落ちるにまかせた方が良いと思
います。また、同一ホストへのリクエストが連続する場合は sleep も忘れずに。
> if line.scan(/#{yahooformat}/) != []
> str.push line.scan(/#{yahooformat}/)
> end
yahooformat は Regexp のインスタンスなので // で囲む必要はありません。
また、後でもう一度 scan するのは無駄なので、1度だけにして結果を代入し
ておきましょう。
--
Eiji Honjoh