Matlab中断引发异常。

6

我希望将对control-c的所有调用作为异常捕获,以便我以不那么破坏性的方式处理中断。我在网上找到的唯一讨论是2009年在matlab exchange上的这个线程。我想知道是否有人知道在更近期的matlab版本中可能出现的新解决方案。谢谢!

2个回答

8
当您按下 CtrlC 时,MATLAB将其解释为中断。例如,您不能捕获调用并执行跳转到不同循环等操作。
但是,您可以使用函数onCleanup 来进行操作,例如关闭打开的文件句柄、删除临时文件、编写日志、显示消息甚至在MATLAB中断之前保存工作区数据。但需要在函数内部调用此函数。
以下是一个简单的示例:
function test
currentDir=pwd;
cd 'path to some folder'
c=onCleanup(@()cd(currentDir));

for i=1:...
    %#some computations here
end 

所以当此函数运行并被中断时,它会将你带回到运行时所在的同一文件夹。这样做很好,因为你不会被困在某个随机的文件夹里,每次都需要手动输入。


这就是发布在Matlab Central链接中的要点,但感谢您提供的代码示例。 - eykanal

1
除了 onCleanup 方法外,注意您可以通过从 handle 派生并实现一个 delete 方法来编写自己的类似对象。文档在 这里

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接