如果用户输入错误的输入,如何退出matlab m文件(而不是matlab本身)?

如果用户输入错误的输入,如何退出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 m文件(而不是matlab本身)? 我知道如果m文件在运行时出错,我们可以按Ctrl-C停止它。但我需要一个命令将它放在我的m文件中,以便在发生不好的事情时这样做


请不要建议使用“退出”或“退出”命令,因为它们会终止整个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的糟糕设计。