错误是帕菲瓦尔功能的警告

13次观看(最近30天)
吉姆·霍坎森
吉姆·霍坎森 2018年1月6日
回答: 吉姆·霍坎森 2018年1月6日
我有以下(伪)代码,并且在命令窗口(2017b Windows)中得到以下警告。
功能Parallel_Worker(q)
尝试
my_function(丢失_variable)
抓住
问:send(me);
结尾
结尾
功能my_function(v)
V = V + 1;
结尾
接收Q应该重新授予错误消息。
这是呼叫者:
功能runexample()
q_receive = Parallel.pool.dataqueue;
l1 = aftereach(q_receive,@handleq);
%启动并行DAQ会话
%------------------------------------------------------------------------
fh = @parallel_worker;
feval_future = parfeval(gcp,fh,0,q_receive);
暂停(5)
结尾
功能句柄(数据)
rethrow(数据)
结尾
%用于检测:
%runexample应该在下面发出警告
%parallel_worker(1) - 在捕获量中丢下错误(如预期输入是数字而不是队列时)
我看到:“警告:未定义的函数或变量'sissove_variable'”而不是:me =
mexception具有属性:
标识符:“ MATLAB:UNDEDIND功能”
信息:“未定义的功能或变量”丢失_variable'。
原因: {}
堆栈:[1×1结构]
我知道,在某些情况下,我看到了错误的错误,这导致未来停止。为什么某些错误会转换为警告?
更新:看来我的问题可能在于投掷...一秒钟...

答案(1)

吉姆·霍坎森
吉姆·霍坎森 2018年1月6日
因此,似乎问题不是工人,而是在客户中。在调试后,我尝试了此操作:
功能句柄(数据)
disp(“我跑了!”
%rethrow(数据)
结尾
在这种情况下,代码表示其运行,我们还看到警告来自rethrow(数据),而不是来自工人。
这表明AfterEACH回调更像是计时器,而不是图形回调,因为后者实际上会引发错误。
因此,总而言之,如果您在认为应该遇到错误时看到警告,那是因为在客户端回调方法中丢下错误,而不是以某种方式抛出工人的警告。然后,这就提出了一个问题,即工人失败时如何在客户端丢失错误...

社区寻宝

在Matlab Central中找到宝藏,发现社区如何为您提供帮助!

开始狩猎!