如何在不使用返回函数的情况下停止Matlab中的程序?
我试图阻止下面的代码在程序中稍后继续,但我不能使用如何在不使用返回函数的情况下停止Matlab中的程序?,matlab,Matlab,我试图阻止下面的代码在程序中稍后继续,但我不能使用return语句。例如,在下面的开关语句中,如果代码遵循否则部分,我希望程序停止,而不使用返回或错误函数 case 1 rendevous = ('the Bridge'); case 2 rendevous = ('the Library'); case 3 rendevous = ('the River Crossing'); case 4 rendevous = ('the Airport'); case
return
语句。例如,在下面的开关
语句中,如果代码遵循否则
部分,我希望程序停止,而不使用返回
或错误
函数
case 1
rendevous = ('the Bridge');
case 2
rendevous = ('the Library');
case 3
rendevous = ('the River Crossing');
case 4
rendevous = ('the Airport');
case 5
rendevous = ('the Bus Terminal');
case 6
rendevous = ('the Hospital');
case 7
rendevous = ('St. Petes Church');
otherwise
disp('Decoy Message: Invalid Rendevous Point')
end
如果您不想管理/传播特殊的
返回代码或值(例如[]
),并立即停止,我个人会使用错误语句,但在主调用函数中使用特殊标识符和捕获,以“隐藏”它(看起来这是您想要做的):
这样,根据错误标识符,调用函数的人可以决定如何适当地处理它(抛出或不抛出或执行特殊操作)
所有matlab内置错误和警告都有标识符,向您可能引发的自定义错误和警告添加标识符是一件好事。这样,人们调用你的代码可以决定处理这些错误,因为他们希望或暂时(或绝对)禁用这些警告,如果他们认为这是适当的或不。请参阅以下链接中的更多内容:
PS:坏习惯,但是如果你愿意,你当然可以把所有的东西(例如,main
和doSomething
)放在一个单独的例程中。鉴于你不能使用return
,你应该在这里使用,你可以改为使用这个更复杂的逻辑(正如第一次建议的那样)。我不推荐使用它,但它是一种解决缺少返回的方法
开关n
案例1
rendevous=(“桥”);
案例2
rendevous=(“图书馆”);
%其他情况。。。
否则
%违法案件
rendevous=[];
结束
如果~ i空(rendevous)
%继续在这里处理。。。
结束
在非法情况下,将变量设置为特定的“错误条件”值,然后测试该条件以避免执行任何其他工作。您可以使用一个单独的error\u条件
变量,在切换之前设置为false
,在非法情况下设置为true
,或者您也可以使用正在使用的变量,比如这里的rendevous
,设置为哨兵值,在这种情况下设置为空数组。您所说的“我不能使用返回函数”是什么意思? 由于编写的代码不是函数,而是脚本,因此return
无论如何都不起作用。如果我理解,您可以使用否则
块来设置rendevous='
,例如,然后将任何剩余的代码包装在If
块中,如果rendevous为空则不会执行?还要注意的是,您不需要paren,即只需执行rendevous='thebridge'代码>也就是说,这确实是一个关于一般编程的基本问题,因此可能值得先了解一些一般背景知识。请提供更多信息:为什么不能使用错误
语句或返回
语句?这是脚本还是函数?您希望MATLAB停止执行并返回MATLAB提示符,还是希望MATLAB关闭?请注意,否则
案例中的错误
语句是常见且正确的操作:用户输入了无效的数据点,您需要抛出错误。@Justin函数返回以停止程序继续。我也不希望出现错误语句,只需要在遇到其他情况时停止程序。但是我不想显式地使用返回函数,而是一堆代码或单独的函数本身来停止程序。@Justinreturn
确实在脚本中工作以退出执行。@laugoutloudbro121您没有回答Cris的问题-如果return
命令完全满足您的需要,为什么不能使用它呢?您能提供更多关于它的详细信息吗我真正需要做的是,我完全不知道我在做什么,我以前的编码知识也帮不上什么忙。我想这正是我在最初的评论中建议的@笑声,你有一个完整的答案。你要求更多的细节,但如果你没有说你到底想要实现什么,就没有办法给你更多的信息。试着读一下@Justin:事实上,这和你在评论中建议的是一样的。对不起,我没看到。修改了答案,给你评分。
function [] = main(id)
%[
try
doSomething(id);
catch(err)
if (strcmpi(err.identifier, 'DecoyMessage:InvalidRendevousPoint'))
return; % Just leave the program without any error prompt (or add specific error handling code here)
else
rethrow(err); % Still raise other error cases
end
end
%]
end
function [] = doSomething(id)
%[
...
switch(id)
case 1, rendevous = ('the Bridge');
case 2, rendevous = ('the Library');
case 3, rendevous = ('the River Crossing');
case 4, rendevous = ('the Airport');
case 5, rendevous = ('the Bus Terminal');
case 6, rendevous = ('the Hospital');
case 7, rendevous = ('St. Petes Church');
otherwise, error('DecoyMessage:InvalidRendevousPoint', 'Invalid rendezvous point');
end
...
%]
end