[#2023] Class Method の index — (Dezawa Shin-ichiro) <dezawa@...>

出沢です

13 messages 1997/02/02

[#2158] [Req] pack/unpack — keiju@... (Keiju ISHITSUKA)

けいじゅ@SHLジャパンです.

14 messages 1997/02/18
[#2166] Re: [Req] pack/unpack — matz@... (Yukihiro Matsumoto) 1997/02/18

まつもと ゆきひろです.

[#2277] ruby 1.0-970228 available — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです.

16 messages 1997/02/28

[ruby-list:2078] Re: fail failed?

From: sinara@...
Date: 1997-02-07 05:04:14 UTC
List: ruby-list #2078
原です。

> まつもと ゆきひろです.

> failの第2引数が例外であった場合,第1引数を無視していました.

$! の実態は例外だったんですね。


> |では、RuntimeError を発生しますが、これを直前の error_type の
> |再発生(でメッセージを "string" にしたもの)にする手もあるか
> |と思うのですがいかがでしょう。

>   fail "error"
> 
> を
> 
>   fail RuntimeError, "error"
> 
> の代わりに使っているプログラムの意味を変えちゃうんで(たぶん,
> 関係ない例外名になってしまう),ちょっとまずいですね.こうい

その問題があることは分かっていました。^^;


> うことをすることが必要であるということになれば,たとえば
> 
>   reraise ["message"]
> 
> で,直前の例外を再発生,messageが指定されれば同じ型でメッセー
> ジだけ変えるなんて仕様には出来ると思いますけど.
> 
> でも,必要ですか?

どうしてもというわけではないのですが、$@ の様なトレースを
自前で構成しようと思っていて、例えば、

FooError が複数の経路のメソッド呼びだしののちに起こるとして、
それを経路を $! に記録しながら rescue していくとします。す
ると経路の途中のメソッドでは、次の様に記述するわけです。

def bar
  ...
  begin
   次のメソッド呼びだし
  rescue FooError
    raise FooError, "bar->" + $!
  rescue
    ...
  end
  ...
end

で、FooError 一つならこれぐらい手間でもないのですが、
FooError1, FooError2,... と増えると、関連するメソッド全て
に、そのための rescue 節を増やしていかねばならないわけで、
それは面倒かな、、、と。

  rescue
    reraise "bar->" + $!

で済むならちょっと便利ですね。引数なしの fail と機能が重なっ
ちゃうのが何ですが。

In This Thread