PHPにtry〜finally構文が存在しないということを知ったのでマジでorz状態になりかけた。例外throwしつつfcloseとかしたかったんだけどなぁ。
てことで自分が使ってる言語の例外処理をメモる。
まずはJava。基本です。
try { // 例外が出るような処理 } catch (Exception e) { // 例外発生時の処理 } finally { // 最後にやる処理 (例外発生に無関係) }
でPython。さすがループ処理にelseがかける言語だけはある。
try: # 例外が出るような処理 except: # 例外発生時の処理 else: # 例外が発生しなかったときの処理 finally: # 最後にやる処理 (例外発生に無関係)
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。