如果用户输入错误的输入,如何退出matlab m文件(而不是matlab本身)?
如果用户输入错误的输入,如何退出matlab m文件(而不是matlab本身)? 我知道如果m文件在运行时出错,我们可以按Ctrl-C停止它。但我需要一个命令将它放在我的m文件中,以便在发生不好的事情时这样做如果用户输入错误的输入,如何退出matlab m文件(而不是matlab本身)?,matlab,error-handling,command,Matlab,Error Handling,Command,如果用户输入错误的输入,如何退出matlab m文件(而不是matlab本身)? 我知道如果m文件在运行时出错,我们可以按Ctrl-C停止它。但我需要一个命令将它放在我的m文件中,以便在发生不好的事情时这样做 请不要建议使用“退出”或“退出”命令,因为它们会终止整个matlab,我不想要它。您只需输入错误命令,如error(“错误的用户输入”),它就会停止脚本 编辑:或者,您可以重构代码,使其不运行,除非您将输入标志设置为true。差不多 inp = input('>', s) if v
请不要建议使用“退出”或“退出”命令,因为它们会终止整个matlab,我不想要它。您只需输入错误命令,如error(“错误的用户输入”),它就会停止脚本 编辑:或者,您可以重构代码,使其不运行,除非您将输入标志设置为true。差不多
inp = input('>', s)
if validateInput(inp)
%do you stuff here or call your main function
else
fprintf('Invalid input')
end
我不确定您如何定义“退出”,但
error
似乎是您需要的功能
y = input('Please input a non-negative number: ');
if(y<0)
error('input must be non-negative');
end
disp( sprintf('y=%f', y ) );
y=input('请输入一个非负数:');
如果(y嘿,我想你可以使用try-catch组合来处理一个有些意外的错误,并采取一些措施
例如,
function [ output ] = test(input)
Bmat = [ 1 1 1 ] % Some matrix
try
input*B;
catch ME
disp(ME.message)
return; % This is the statement that exits your function
end
end
如果你跑
>> test([1 1 1])
由于变量“input”和“B”的内部维度不匹配,因此它无法工作,但“try”语句将向“catch”抛出异常,并执行您想执行的任何操作。在这种情况下,它将在命令行显示错误消息并退出函数
这里的变量“ME”只是一个用于错误处理的MATLAB对象,ME.message存储一个包含解释器捕获的错误类型的字符串
我刚刚又读了一遍你的问题……我假设“return”命令可能就是你真正想要的,你可以使用它退出任何逻辑或循环语句,以及函数
您可以从MATLAB文档中阅读有关“return”命令和错误处理的更多信息
虽然有效且简单,但将error
与单个参数一起使用并不是最好的。它会阻止lasterror
之类的事情完全发挥作用。此外,参数中的特殊字符(如“\n”
)不会被转换。我假设您建议使用MSGID参数,尽管我不确定如何使用它我确实注意到,即使在2017a中,它也要求这些参数是字符数组,而不是字符串……我讨厌Matlab。如果有多个地方需要退出一个函数,这个解决方案会导致一个运行或不运行If语句的树。不切实际。return
有效,除非有多个输出,否则会出现错误或者信息会提示。我想是Matlab的糟糕设计。