错误是一个警告parfeval函数

6视图(30天)
吉姆Hokanson
吉姆Hokanson 2018年1月6日
回答: 吉姆Hokanson 2018年1月6日
我有以下(伪)代码,我得到以下警告我在命令窗口(Windows 2017 b)。
函数parallel_worker (q)
试一试
my_function (missing_variable)
q.send(我);
结束
结束
函数my_function (v)
v = v + 1;
结束
接收问应该重新抛出的错误消息。
调用者:
函数runExample ()
q_receive = parallel.pool.DataQueue;
L1 = afterEach (q_receive @handleQ);
%启动并行采集会话
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
跳频= @parallel_worker;
feval_future = parfeval (gcp、跳频、0,q_receive);
暂停(5)
结束
函数handleQ(数据)
重新抛出(数据)
结束
%进行测试:
% runExample应该把下面的警告
% parallel_worker(1) -抛出一个错误的捕捉(如预期当输入是数量而不是队列)
我看到:“警告:未定义的函数或变量missing_variable”而不是:我=
MException属性:
标识符:“MATLAB: UndefinedFunction”
信息:未定义的函数或变量的missing_variable’。”
原因:{}
栈:[1×1结构]
我知道在某些情况下我看到错误导致未来停止。为什么有些错误被转化为警告?
更新:看来我的问题可能与扔…一秒……

答案(1)

吉姆Hokanson
吉姆Hokanson 2018年1月6日
所以,似乎这个问题不是工人,但在客户端。取代它可调试后我尝试:
函数handleQ(数据)
disp (“我跑!”)
%重新抛出(数据)
结束
在这种情况下,代码表示它跑,我们也看到,警告来自重新抛出(数据),而不是工人。
这表明afterEach回调比图形操作起来更像是一个定时器回调,因为后者会抛出的错误。
所以总的来说,如果你看到警告当你认为你应该得到一个错误,这是因为抛出的错误在客户端回调方法,不是一个警告,被扔在工人。这就引出了一个问题,如何在客户端抛出一个错误当工人失败……

类别

找到更多的在编程工具帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!