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 变量,则它们的调用顺序是未指定的。类似功能,另请参阅 unwind_protect 语句。
示例:
octave:1> trigger = onCleanup (@() disp ('onCleanup was executed'));
octave:2> clear trigger
onCleanup was executed
octave:3
版权所有 © 2024-2026 Octave中文网
ICP备案/许可证号:黑ICP备2024030411号-4