[ruby-list:429] Re: exception spec

From:
Date: 1996-08-24 09:58:35 UTC
List: ruby-list #429
けいじゅ@SHLジャパンです. 

In [ruby-list :00425 ] the message: "[ruby-list:425] Re: exception
spec ", on Aug/23 12:29(JST) matz@caelum.co.jp (Yukihiro Matsumoto)
writes:

>実はそれほど変わっていないんですよ,中身は.名古屋<->東京間
>の新幹線の中でほとんどできちゃいましたから.

うーん. 確かに電車の中は仕事がはかどる.

>|exitも捕捉しちゃうんですか? どういう時に役に立つのだろう?
>例えば
>
>   while line = gets
>     begin
>       eval line
>     rescue SystemExit
>       print "You can't exit\n"
>     end
>   end
>
>などユーザ入力された文字列をevalしたいがexitはしたくない時な
>どに使えると思います.

なるほどね.

>Errno::ENOENTというクラスです.これはErrnoモジュールのクラス
>変数ENOENTとしてアクセスされます.
>
>|クラスでありそのクラスがErrno::ENOENTに代入されているのかな?
>
>ですから,これが正解です.

話しは違うのですが, ruby では, このような局所クラスって定義できるよう
になっていましたっけ?

といいつつ...

class Foo
  class Bar
  end
end

print (Foo::Bar).type
----
Class

んー. できているみたいだ...

>|>(2) resuceの構文の変更
>|クラスで識別するわけですね. 
>C++やJavaを連想できて良いのでは?

まあ(^^;;

>|前にもいったかも知れないのですが, interruptがどのsignalか区別できると
>|嬉しいのです. 例えば, interruptの種別毎にサブクラスがあるとかですね.
>
>interruptは一種類(SIGINT)しかないです.

そうだったんですね. 入力時に ^C とかされたのを 例外として キャッチした
かったわけだ.

>|>(3) raise
>|>      raise 文字列              # RuntimeErrorを起こす
>|これって, この使い方はできないという意味ですよね?
>
>できます.例外の種別が指定されず文字列しか与えられなかった場
>合には,RuntimeErrorという例外が発生します.まあ,互換性のた
>めなんで,これの使用はお勧めしませんけどね.

なるほど. そういう意味ですね. 

>単なる別名です.failは予約語ではないので,ユーザがもし同じ名
>前のメソッドを定義しちゃった場合に例外が発生できなくなると困
>るので.break,next,redo,retryにもそれぞれ `!'のついた別名が
>定義されています.

ああ. そういえばそんな話しがあったような. 失礼しました(__

>|>    * 例外の定義
>|rubyレベルで例外クラス及び例外を定義するにはどうしたら良いのかな?

>  # 例外クラスの定義
>  class NewException<Exception
>  end
>
>  # 例外の発生
>  raise NewException, "the message you want to associate with'

分かりましたが. 例えば,

Error::ENOENT

だと, "No such file or directory" が 決まり文句としてありますよね. そ
ういうメッセージに対するサポートはないのでしょうか?

__
..........................................石塚 圭樹@SHLジャパン(株)...
------------->アドレス変わりました!! e-mail: keiju@shljapan.co.jp <----

In This Thread

Prev Next