python における
try: statements except name: statements else: statementsに直接相当する機構は perl にはありません。 ですが、perl で同様のことを実現するためには次のような構文を用いること ができます。
# try eval { statement; croak(""); # raise } # except unless ($@) { statements for exception; } # else else { statements; }
catch throw のようなフレーズを使えるするようにする perl module もあるのですが、 素直に eval $@ 機構を使う方が分かり易いと思います。
最大の問題は、どれだけのエラー情報を呼出側に伝えるかという作りの部分で すね。なやましいです。
croak() からどうやってトラップのエラー情報を上げるか?
一つの案は
croak("__ERROR_$keyword__"); croak("__ERROR_$keyword__: $reason");形式です。 たとえば
croak("__ERROR_cgi.insecure__: $reason");$keyword の部分で messages のキーを渡すようにする。 でも、パラメータは?…パラメータまではむずかしいなぁ。どうするかな
このレベルでは、UNIX のエラーシステムと同程度なんですね。 数字が文字列に変わっただけです。
Copyright (C) 1993-2025 Ken'ichi Fukamachi mail:< fukachan at fml.org >