[#21157] あったらうれしいメソッド to_n, to_n!, to_s! — ogino@...

荻野です。あったらうれしいメソッドということで書いてみます。

16 messages 2000/03/03

[#21159] メソッドの入り口 — ogino@...

荻野です。もうひとつご指導ください。

93 messages 2000/03/03
[#21170] Re: メソッドの入り口 — Shin-ichiro Hara <sinara@...> 2000/03/03

原です。

[#21243] Re: メソッドの入り口 — keiju@... (石塚圭樹) 2000/03/07

けいじゅ@日本ラショナルソフトウェアです.

[#21247] Re: メソッドの入り口 — 中村暁史 Nakamura Akifumi <BXQ04723@...> 2000/03/07

[#21267] 引数コピーとオブジェクト指向 (Re: メソッドの入り口) — Hideto ISHIBASHI <s34204@...> 2000/03/08

石橋秀仁です。

[#21272] Re: 引数コピーとオブジェクト指向 (Re: メソッドの入り口 ) — 中村暁史 Nakamura Akifumi <BXQ04723@...> 2000/03/08

[#21276] Re: 引数コピーとオブジェクト指向 (Re: メソッドの入り口 ) — nobu.nakada@... 2000/03/09

なかだです。

[#21279] Re: 引数コピーとオブジェクト指向 (Re: メソッドの入り口 ) — ogino@... 2000/03/09

oop未満の世界観の荻野です。

[#21282] Re: 引数コピーとオブジェクト指向 — Tomoyuki Kosimizu <greentea@...2.so-net.ne.jp> 2000/03/09

越水です。

[#21285] Re: 引数コピーとオブジェクト指向 — ogino@... 2000/03/10

荻野です。

[#21293] Re: 引数コピーとオブジェクト指向 — Matsuo Hisanori <hisanori@...> 2000/03/10

松尾です。

[#21297] Re: 引数コピーとオブジェクト指向 — ogino@... 2000/03/10

荻野です。

[#21302] Re: 引数コピーとオブジェクト指向 — 土岐 仁謙 <toki@...> 2000/03/10

土岐です。

[#21371] Re: 引数コピーとオブジェクト指向 — Matsuo Hisanori <hisanori@...> 2000/03/13

松尾です。

[#21374] Re: 引数コピーとオブジェクト指向 — TADA Tadashi <sho@...> 2000/03/13

ただただしです。

[#21365] Re: 引数コピーとオブジェクト指向 — Matsuo Hisanori <hisanori@...> 2000/03/13

松尾です。

[#21280] raise non-Exception object — Kenichi Komiya <kom@...3.rim.or.jp>

24 messages 2000/03/09
[#21283] Re: raise non-Exception object — nobu.nakada@... 2000/03/09

なかだです。

[#21315] Re: raise non-Exception object — Kenichi Komiya <kom@...3.rim.or.jp> 2000/03/11

[#21342] Re: raise non-Exception object — nobu.nakada@... 2000/03/12

なかだです。

[#21384] ruby 1.4.4 — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

35 messages 2000/03/13

[#21442] 配列内のソート — Takayuki Tanaka <tanaka@...>

こんにちは Tanです。

16 messages 2000/03/15

[#21583] ruby for Web — TAKAHASHI Masayoshi <maki@...>

高橋征義です。

27 messages 2000/03/22
[#21584] Re: ruby for Web — "NAKAMURA, Hiroshi" <nakahiro@...> 2000/03/22

なひです.

[#21649] net-1.1.10 — TAKAHASHI Masayoshi <maki@...>

高橋征義です。net/http 使いたおし中。

17 messages 2000/03/27

[#21669] new version of mod_ruby & eRuby — Shugo Maeda <shugo@...>

前田です。

14 messages 2000/03/28

[ruby-list:21354] Re: raise non-Exception object

From: Kenichi Komiya <kom@...3.rim.or.jp>
Date: 2000-03-12 16:51:27 UTC
List: ruby-list #21354
小宮です。

From: nobu.nakada@nifty.ne.jp
Subject: [ruby-list:21342] Re: raise non-Exception object
Date: Sun, 12 Mar 2000 12:20:37 +0900

> なかだです。
> 
>   たしかに「なんでNameError?」というのは分かる気がします。一言で
> 言っちゃうとその辺の振舞が分かりにくい or ちゃんと書いてない、と
> いうことですか?

おお、まさしくその通りです。

>   いいんじゃないでしょうか。賛成です。正確には Exception であって
> も exception() は呼ばれるようですが、Exception#exception は自分自
> 身を返すし、Exception.exception は自分のインスタンスを返すので

はい。勘違いしてました。ソースを読んで出直してきました。

Cのコードが発生する例外はごく一部を除いて、Exception.exceptionを呼びだ
さないようですね。Cで書かれたクラスとRubyで書かれたクラスをあまり区別せ
ずに使えるのがRubyの良いところの一つだと思うのですが、この観点からすると
Cのコードもexceptionを呼んでくれても良いような気がするのですが・・・。
そうすれば、exceptionを再定義してエラーの発生回数を種類別に数えるなんて
使い方もできるようになりますし。(未だにexceptionの本来の使い道を理解して
無いので外してるかもしれませんが^^;)

>   こうですか?
> 
> >  引数が例外ではない場合、そのオブジェクトのexceptionメソッドが
> >  返す値が実際に発生する例外になります。この値は例外でなければな
> >  りません。
> 
> # なんか日本語としてヘンかも(^^;。

そんな事はないと思います。ただ、Exceptionにもexceptionが呼ばれる事を知っ
てしまったので、全体に手をいれて以下のようにした方がよいのではないかと思
えてきました。

------------------------------------------------------------------------
例外を発生させます.第一の形式では直前の例外を再発生させます. 第二の形
式で引数が文字列であった場合,その文字列をメッセー ジとする 
RuntimeError 例外を発生させます.それ以外の場合は第一引数で渡されたクラ
ス/オブジェクトのexceptionメソッドが返す例外を発生させます(Exceptionク
ラスを参照).第三,第四の形式では第二引数がexceptionを呼びだす際の引数と
して渡されます.第四の形式の第三引数は $@または callerで得られる スタッ
ク情報で,例外が発生した場所を示します.

独自にexceptionメソッドを定義する場合は例外またはnilを返すようにする必要
があります(それ以外の値はraise内部でTypeError例外を発生させます).nilが
返った場合は直前の例外を再発生させます(第一の形式と同様).これらのことか
ら,実際に発生する例外にはkind_of?(Exception)が常に成り立ちます.
------------------------------------------------------------------------

「nilが返ったら引数無しのraiseと同じ」というのは積極的に意図された挙動な
のかどうかわかりませんでしたが、現状はそうなっているので書いときました。

いずれにせよExceptionクラスの説明に以下を追加したほうがよいみたいですね。

------------------------------------------------------------------------
クラスメソッド:
   exception([error_message = ""])
   new([error_message = ""])

     引数としてエラーメッセージを表す文字列を与えることができます. この
     メッセージはデフォルトの例外ハンドラで表示されます.

     exceptionの方はraiseに例外クラス名を指定した際に呼びだされます.

メソッド:

   exception
     selfを返します.raiseに例外オブジェクトを渡した際に呼びだされます.
------------------------------------------------------------------------

htmlへの差分でよければ(英語も用意して)パッチにして送りなおしますが、受
けつけ中でしょうか?

小宮
kom@t3.rim.or.jjp

In This Thread