unwind_protectなる構文を見つけました。
とはLispで使われてる構文らしい。
unwindableで巻き戻しできないという意味があるので、unwind_protectは巻き戻し防止って訳でしょうかね……?
Try-Catch構文は別に存在しているらしく、使い分けが……???
調べてみると
- unwind_protectは通常処理、エラーを問わずunwind_protectからunwind_protect_cleanupを実行
- tryはエラーが生じたときのみ、catchのなかを実行
という事みたい。
そういえば、こんな構文があるってLand of Lispで読んだ気がする……。
実際のところ
以前やったOctaveでArduino IDEのシリアルプロッタみたいな事をするライブラリsplotで使てました。
概要だけつまみだすと、以下のような感じ。
エラーキャッチをメインに使ってますね。
unwind_protect srl_flush(s1); %% 通常処理 while true % 読み取り処理 endwhile unwind_protect_cleanup %% クローズ処理 srl_close(s1); end
他にはグローバル変数の再初期化なんかにも使う様子。
フラグと組み合わせることで、特定のエラーなりプロセス終了のみに特化した処理をIF文で分けるとか。