我使用命令 applicationCompiler -package harmonic_viewer.prj
编译MATLAB程序进行分发 . 有时我会错过一个文件,应用程序编译器会抛出错误 . 我想捕获这样的错误并传递错误以终止编译许多程序的Windows批处理脚本 .
从文档中可以看出,applicationCompiler不会返回通过/失败结果 . 它会抛出MATLAB命令窗口中以红色显示的错误 . 我相信我应该能够在try-catch-end块中捕获错误,但它对我不起作用 . 这是一个示例会话
>> try
applicationCompiler -package harmonic_viewer.prj
catch me
disp('ac error')
end
Error: Caught exception when packaging project: C:\build_matlab\source\harmonic_viewer\harmonic_viewer.prj
com.mathworks.project.api.InvalidProjectException
File filteredunwrap.m from Files required for your application to run does not exist.
>>
我期望try-catch-end块捕获错误并打印'ac error' .
谁能看到我做错了什么?
我在64位Windows 7上使用MATLAB r2014a .
1 回答
编译是在另一个线程上运行的 - 你知道这是因为你可以在编译过程中与Matlab交互 .
修复此问题的方法(它有点像黑客)是创建一个post build方法,它将读取命令窗口并查找关键字,即“Package failed”或“package finished”或在你的情况下“Error:Caught “
例如
注意:你应该在循环中进行时间限制检查以捕获无限循环情况......
您当然可以扩展它以搜索您的案例的错误和关键字 .