相关疑难解决方法(0)

如何以异常安全的方式处理MATLAB中的资源?(比如"试试......终于")

由于MATLAB中的try-catch块没有finally子句,我发现自己编写了大量代码,如下所示:

fid = fopen(filename);
if fid==-1
    error('Couldn''t open file');
end
try
   line = getl(fid);
catch ME
   fclose(fid);
   rethrow ME;
end
fclose(fid);
Run Code Online (Sandbox Code Playgroud)

我发现在两个地方都有fclose功能,很容易出错.

这样做有更好的方法吗?

file-io matlab exception-handling

29
推荐指数
2
解决办法
3657
查看次数

尝试...最终在Matlab中等效

可能重复:
如何以异常安全的方式处理MATLAB中的资源?(比如"试试......终于")

我用这种方式使用Matlab并行计算工具箱:

matlabpool open 

parfor …

matlabpool close
Run Code Online (Sandbox Code Playgroud)

如果发生错误parfor,则程序终止,并且matlabpool未关闭.当我修复错误并再次运行它时,matlabpool open失败,因为它已经打开.所以我需要手动关闭它,这是我永远忘记的.理想的方法是将其更改为(伪代码):

matlabpool open 
try
  parfor …
finally
  matlabpool close
end
Run Code Online (Sandbox Code Playgroud)

这有什么最好的做法吗?

error-handling matlab

11
推荐指数
1
解决办法
4897
查看次数

无法删除Matlab创建的文件

可能重复:
如何以异常安全的方式处理MATLAB中的资源?(比如"try ... finally")
如何关闭错误后保持打开的文件?

我通过fopen和创建一些文件和目录mkdir,并fclose在完成文件写入后用适当的命令关闭所有打开的流.然而,当我用Ctrl+ 中止计算时,C这些目录/文件以某种方式保留在内存中,我无法删除它们.即使后续close all调用也没有释放它们,我必须退出Matlab来释放这些文件.知道我怎么能反击这种行为(除了'停止使用中止')?

系统是:Win7 64bit,Matlab R2011b.

file-io matlab

3
推荐指数
1
解决办法
2722
查看次数