Snap.Shot.cx

トップページへ戻る

[雑談] try and exception
06/11/2000 06:43 (投稿者:たかの)

久々にちょっと長めのPerlスクリプトを書いている。といってもたかだか300行程度のもので、こんなものを「長い」とか言っているようでは、スキルの浅さを露呈しているようなものなのだけど。
PythonやRubyを見ていて便利そうだなぁ、と思うのが例外処理。tryほにゃらら、とやって予想外の事態が発生したらエラー処理、というやつ。
あ、JavaやC++にもあるのか。

いちおう、Perlにもeval{}というやつがある。XML::Parserモジュールを使ったサンプルなどではよく見かけるし、なによりReference(参照=Cでいうところのポインタみたいなやつ)を多用しているスクリプトであれば、未定義のReferenceをいちいちチェックしなくて済む。
…ではあるのだけど、どうにも抵抗があってなかなか使う気にならない。
これって性格なんだろうか、などと、ふと思ったりする。

日常生活でも、try and exceptionの場面ってけっこうある。モーニングのマンガに出てくる「エノキダ君」ではないけど、日常生活でもどうにも「○○に失敗したらどうしよう」と常にびくびくしている自分がいたりして、それぞれの「失敗」に対するエラー処理を個別に考えてしまったりする。
エラーしないような準備はもちろんだけど、エラーしたときでもなんとかフォローできるような。

でもこういう考え方は非常に効率が悪いなぁと、ちょっと思い始めたり。
構えていた「失敗」って、そうそう起こるもんじゃないし、逆に全く予想外の事態に遭遇することも多々ある訳で。
例外定義がなくって、そのまんま思考停止しちゃうようじゃ全くマズい。

try and exception的な「例外処理」って、オブジェクト指向以後のものなんじゃないかな。つまり、「ある枠組みの単位で成功したか失敗したか」で処理を変えるという流れ。

たとえば3ページ原稿10本のうち1本を落としそうなら、その1本の例外処理を考えるんじゃなくって、全体(30ページの原稿)全体でなんとかすることを考える。また、原稿全体を落としそうになったら(をぃ)、その外枠、つまりなんとか本が出せるような例外処理を作動させる。

また、たとえば恋人と喧嘩した例外処理も大事((--;)だけど、しょっちゅう喧嘩するようなら、その外枠、つまりその相手と別れるという例外で処理したほうがいいとか。

すべてを「人生の例外処理」みたいな大枠で処理しちゃうのはさすがにマズいけど、もうちっと巨視的な枠組みで処理することに慣れたほうがいいのかな、なんて思い始めているところ。

うーん、eval{}、使ってみようかな。
それとも、こういう思想でeval{}するのはマズいですか?

メールでコメント


(Powered by Zope)
リンクはご自由にどうぞ。各記事には記事番号がついていますので、URLは変わりません。
© 2000-2013 Yukimasa TAKANO, all RIGHTs reserved.