chikuchikugonzalezの雑記帳

趣味とか日記とかメモとか(∩゚д゚)

自分がよく使う言語の例外処理

PHPにtry〜finally構文が存在しないということを知ったのでマジでorz状態になりかけた。例外throwしつつfcloseとかしたかったんだけどなぁ。
てことで自分が使ってる言語の例外処理をメモる。

まずはJava。基本です。

try {
    // 例外が出るような処理
} catch (Exception e) {
    // 例外発生時の処理
} finally {
    // 最後にやる処理 (例外発生に無関係)
}

Python。さすがループ処理にelseがかける言語だけはある。

try:
    # 例外が出るような処理
except:
    # 例外発生時の処理
else:
    # 例外が発生しなかったときの処理
finally:
    # 最後にやる処理 (例外発生に無関係)

RubyPythonと同じことができる。

begin
    # 例外が出るような処理
rescue
    # 例外発生時の処理
else
    # 例外が発生しなかったときの処理
ensure
    # 最後にやる処理 (例外発生に無関係)
end

PHPはfinallyがない。

try {
    // 例外が出るような処理
} catch (Exception $e) {
    // 例外発生時の処理
}
他の言語は?

C++C++/CLI*1、Dは言語レベルで例外機構を持っているはず。CはWin32で構造化例外処理があるのでたぶん処理系依存Perlはdieを使う以外にモジュールを入れればtry-catchできるらしい。
Tclはcatchコマンドでエラーを補足するそうで。

MUGENに例外処理を希望

そうすれば謎のエラーを吐いてMUGENが終了するのをちょっとは抑えられると思ふ。要らないといえば要らないけど*2

*1:Managed C++はどうなんでしょ?

*2:例外処理よりも処理速度のほうが重要だと思うので