[#8166] jcode.rb for UTF-8 — WATANABE Hirofumi <Hirofumi.Watanabe@...>
わたなべです.
[#8168] {literal}#[]= — EGUCHI Osamu <eguchi@...>
えぐち@エスアンドイーです。
まつもと ゆきひろです
えぐち@エスアンドイー です。
まつもと ゆきひろです
えぐち@エスアンドイー です。
In message "[ruby-dev:8189] Re: {literal}#[]="
[#8175] yacc generated symbols — Masaki Fukushima <fukusima@...>
福嶋です。
[#8176] Multiple self assignment — Kazuhiro Yoshida <moriq.kazuhiro@...>
もりきゅうです。
まつもと ゆきひろです
もりきゅうです。
まつもと ゆきひろです
西@九大です。
まつもと ゆきひろです
西@九大です。
もりきゅうです。
けいじゅ@日本ラショナルソフトウェアです.
えぐち@エスアンドイー です。
In message "[ruby-dev:8266] Re: 例外を処理する 2 項演算子"
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
[#8204] Re: [ruby-list:18281] Re: アクセス制御について — Shugo Maeda <shugo@...>
前田です。
原です。
前田です。
けいじゅ@日本ラショナルソフトウェアです.
前田です。
[#8218] append_features — gotoken@... (GOTO Kentaro)
ごとけんです
[#8234] Syntax check in test.rb — Katsuyuki Komatsu <komatsu@...>
小松です。
[#8259] Re: [ruby-list:18468] Re: Array doesn't include Comparable — ttate@...
立石です。
[#8290] [patch] autoupdate — EGUCHI Osamu <eguchi@...>
えぐち@エスアンドイーです。
まつもと ゆきひろです
[#8305] [patch] duplicated include in regex.c — Minero Aoki <aamine@...>
あおきです。
[#8315] Re: [ruby-list:18601] Re: [REQ] [].grep(pat){} ==> [].grep(pat).collect{} — Kazunori NISHI <kazunori@...>
西@九大です。
まつもと ゆきひろです
西@九大です。
まつもと ゆきひろです
西@九大です。
新井です。
まつもと ゆきひろです
新井です。
新井です。
まつもと ゆきひろです
小松です。
まつもと ゆきひろです
ごとけんです
なかだです。
[#8319] Re: Exception handling — Jun Adachi <adachi@...>
安達@沖データと申します。
西@九大です。
けいじゅ@日本ラショナルソフトウェアです.
[#8320] constants definition in extarnal files — nagai@...
永井@知能.九工大です.
In message "[ruby-dev:8320] constants definition in extarnal files"
[#8325] rdtool-0.5.2 and racc-0.9.5/racc-0.10.0 — Katsuyuki Komatsu <komatsu@...>
小松です。
[#8330] Re: Exception handling — Kazuhiro Yoshida <moriq.kazuhiro@...>
もりきゅうです。
[#8332] Re: Exception handling — Kazuhiro Yoshida <moriq.kazuhiro@...>
もりきゅうです。
[#8353] Regexp <=> — Kazuhiro Nishiyama <nishiyama@...1.tiki.ne.jp>
こんばんは、ZnZです。
まつもと ゆきひろです
こんばんは、ZnZです。
まつもと ゆきひろです
[#8366] Re: Exception handling — Kazuhiro Yoshida <moriq.kazuhiro@...>
もりきゅうです。
[#8375] File test methods for Stat — nobu.nakada@...
なかだです。
まつもと ゆきひろです
なかだです。
まつもと ゆきひろです
まつもと ゆきひろです
なかだです。
まつもと ゆきひろです
[#8445] [PATCH] Ruby/Tk and ... — Koji Arai <JCA02266@...>
新井です。
新井です。
永井@知能.九工大です.
[#8446] [REQ] {enumerable, integer, range}.rand — Kazunori NISHI <kazunori@...>
西@九大です。
まつもと ゆきひろです
西@九大です。
まつもと ゆきひろです
西@九大です。
まつもと ゆきひろです
西@九大です。
まつもと ゆきひろです
西@九大です。
まつもと ゆきひろです
これつぐです。
まつもと ゆきひろです
[#8451] new Hash (Re: [ruby-list:19043]) — Wakou Aoyama <wakou@...>
青山です。
原です。
松で
青山です。
[ruby-dev:8338] Re: Exception handling
安達@沖データと申します。
> まつもと ゆきひろです
お世話になります。
> In message "[ruby-dev:8319] Re: Exception handling"
> on 99/11/16, Jun Adachi <adachi@tpegasus.lab.okidata.co.jp> writes:
>
> |このコードを書きながら、「欲しいなぁー」と思った機能は、次の二つです。
> |
> |(1) ユーザが定義可能なエラーハンドラー辞書と標準クラスからの呼出し。
> | さらに贅沢を言うと、PostScriptの辞書みたいにスタッカブルになっている
> | と、以前の状態に簡単に戻れるのでうれしい。
>
> これはPostScriptを知らないこともあってちょっとイメージが湧き
> ませんでした。
辞書自体はHashと同じです。
辞書スタックも含めてクラスにしてみるとこんな感じでしょうか。
#エラーハンドラ辞書じゃなくて、一般的なものになっています。
#each_keyとか、eachとかハッカーな人に笑われそうですが、こんどはとりあ
#えず動きます :-)
-- dict.rb
#!/usr/local/bin/ruby
class Dictionary
def initialize
@stack = []
@stack.unshift({})
end
def dup
@stack.unshift({})
end
def pop
@stack.shift
end
def push(d)
@stack.unshift(d)
end
def define(key, value)
@stack[0][key] = value
end
def lookup(key)
v = nil
@stack.each_index { | idx |
break if ((v = @stack[idx][key]))
}
v
end
def each_key
keys = []
@stack.each_index { | idx |
keys = keys + @stack[idx].keys
}
keys.uniq!
keys.each { | key |
yield key
}
end
def each
self.each_key { | key |
yield(key, self.lookup(key))
}
end
alias save dup
alias restore pop
end
dict = Dictionary.new
dict.define(Errno::ENOENT, "default handler(Errno::ENOENT)")
dict.define(Errno::EINVAL, "default handler(Errno::EINVAL)")
print "initial entries\n"
dict.each { | key, val |
print "#{key} = #{val}\n"
}
dict.save
dict.define(Errno::ENOENT, "new handler(Errno::ENOENT)")
print "modified entries\n"
dict.each { | key, val |
print "#{key} = #{val}\n"
}
dict.restore
print "resumed entries\n"
dict.each { | key, val |
print "#{key} = #{val}\n"
}
--
一時的なエラーハンドラーを設定する場合に、上記プログラムだと
dict.restoreだけで戻るので、現状復帰が簡単という安直な話です。
まつもとさんが「簡単なだけ」というのを好まないことは了解しています。
しかし、前のメールでも書いたように、「全部デフォルト」と「全部begin
.. rescue .. endでエラー処理する」の中間程度の真面目さのプログラムを書
きたい場合に、この方式は便利だろうと思っています。
ただ、標準クラスからこのようなエラーハンドラーを呼び出すようにすると、
最初からエラーが発生する事を期待して作られているようなプログラムで効率
が悪くなったりしないかと心配ではあります。
> |(2) 単独のrescue節で複数のエラーを処理できるように、現在捕まえているエ
> | ラーオブジェクトを仮引数で受け取りたい。
>
> $!でとれます。
はい。忘れていました。
> 実は現在のRubyで$変数から解放されていないのは、
> これと$>だけなんで(他はいちおう回避策がある)、これらに対して
> 別のアクセス法を用意したいとは思っています。良いアイディアが
> あれば歓迎します。
>
> begin
> rescue IOError(err)
> end
これは、IOErrorクラスのエラーの場合にこのrescue節に捕まって、詳細はerr
で参照できるオブジェクトを見ろという意味ですよね?
#おお、ご本家のドキュメントでは組み込みクラスのところにExceptionが増
#えていますね。今日まで、気が付きませんでした。
> begin
> rescue IOError
> Exception::info
> end
こっちは、クラス定数で参照できるという意味でしょうか?
私の好みは、前者です。
#なんか、後者だとやっぱりグローバルな変数にアクセスするのと変わりない
#気がして。
--
*------* adachi@okidata.co.jp
|人∧鷲| 沖データ 第一研究所
| <女> | 安達 淳
|牛∨獅|
*------*