Octave提供了几种从错误中恢复的方法。有try/catch阻碍,unwind_protect/unwind_protect_cleanup块,最后是onCleanup命令
这个onCleanup命令将一个普通的Octave变量(触发器)和一个任意函数(动作)关联起来。只要Octave变量存在——无论是从于函数返回、错误,还是仅仅因为该变量已被删除clear--则执行所赋值的函数。
该函数可以执行任何必要的清理操作,例如关闭打开的文件句柄、打印错误消息或将全局变量恢复为其初始值。最后一个例子是Octave代码的一个非常方便的习惯用法。例如
function rand42
old_state = rand ("state");
restore_state = onCleanup (@() rand ("state", old_state));
rand ("state", 42);
...
endfunction # rand generator state restored by onCleanup
obj = onCleanup (function) ¶创建一个特殊对象来执行给定的function一旦销毁。
如果对象被复制到多个变量(或数组或结构体数组)或从函数返回,则function将仅在清除对象的最后一个副本后执行。
输入function是函数的句柄。句柄可以指向一个匿名函数,以便直接将命令放置在onCleanup呼叫
编程注意事项:如果多个本地onCleanup变量是创建的,调用它们的理论是未指定的。类似函数详见Unnd_protet语句.
用例
octave:1> trigger = onCleanup (@() disp ('onCleanup was executed'));
octave:2> clear trigger
onCleanup was executed
octave:3
版权所有 © 2024-2025 Octave中文网
ICP备案/许可证号:黑ICP备2024030411号-2