mysql:615
From: 民斗 <民斗 <tommy@xxxxxxxxxx>>
Date: Fri, 22 Jan 1999 11:15:39 +0900
Subject: [mysql 00615] Re: ruby
民斗です。 # やばい…風邪のひき始めっぽい。 [Subject: [mysql 00613] ruby] [Date: Thu, 21 Jan 1999 23:15:52 +0900 From:takeshi@xxxxxxxxxx] > ruby-mysql 2.1 上で Mysql.new() が失敗した場合、 > (サーバーが反応しないか、アクセスデナイドか) > ruby が MysqlError で止まる(abortする)のですが、 > これをやめるにはどうすればよいでしょうか? > > mysql-ruby のソースの > VALUE real_connect() > を変えるしかないんでしょうか? > > エラーなら、nilかなにかで返すにはどうすればよろしいでしょう? > > Raise(eMysql, "%s", mysql_error(&my)); > というのが、error 時に呼ばれていますが、(ruby の API でしょうが)、 > これがなんの働きをしているか?なので、 > 単純に return(NULL); でいいものかどうか、、、 Ruby では、エラーが発生した場合に、エラーを示すコードを返すのではなく、 例外を発生させる(C++ の例外と同じ)のが一般的なようなので、mysql-ruby でもそうしました。 Ruby の例外をキャッチするには、begin 〜 rescue 〜 end を使います。 例えば、Mysql.new() の例外をキャッチしたい場合は、 begin m=Mysql.new(host, user, passwd) rescue eMysql print "Mysql.new() error occured\n" end でできます。 # あ、今気がついたけど、これだとエラーの理由がプログラムから # わからない…(^^; 例外を使う利点は、個々のメソッド呼び出しのレベルで、いちいちエラー チェックを行なう必要がないことですが、逆に個々の呼び出しでエラー チェックを行ないたい場合は、プログラムが煩雑になってしまうという面も あると思います。 エラー時に例外をあげるかエラー値を返すかを選択できる機構も作ろうと 思ってましたが、忘れてました…(^^; -- 民斗 <tommy@xxxxxxxxxx>
-> 615 1999-01-22 11:15 [民斗 <tommy@xxxxxxxx] Re: ruby 617 1999-01-22 12:12 ┣[民斗 <tommy@xxxxxxxx] 619 1999-01-22 13:21 ┃┗[<takeshi@xxxxxxxxxx>] 641 1999-01-25 00:26 ┗[民斗 <tommy@xxxxxxxx]