Kam*_*ely 13 error-handling matlab command
如果用户输入错误输入,如何退出matlab m文件(不是matlab本身)?我知道如果m文件在运行时出错,我们可以按Ctrl-C来停止它.但是我需要一个命令将它放在我的m文件中,如果发生了不好的事情就这样做.
请不要建议'退出'或'退出'命令,因为它们终止整个matlab而我不想要它.
YYC*_*YYC 13
我不确定你如何定义"退出",但error似乎是你需要的功能.
y = input('Please input a non-negative number: ');
if(y<0)
error('input must be non-negative');
end
disp( sprintf('y=%f', y ) );
Run Code Online (Sandbox Code Playgroud)
嘿,我想你可以使用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
Run Code Online (Sandbox Code Playgroud)
如果你跑
>> test([1 1 1])
Run Code Online (Sandbox Code Playgroud)
它不起作用,因为变量'input'和'B'具有不匹配的内部维度,但'try'语句将抛出'catch'的异常,并从那里做任何你想做的事.在这种情况下,它将在命令行显示错误消息并退出该功能.
这里的变量'ME'只是一个用于错误处理的MATLAB对象,而ME.message存储一个包含解释器捕获的错误类型的字符串.
我只是再次阅读你的问题...我假设命令'return'可能是你真正想要的,你将能够使用它来退出任何逻辑或循环语句,以及函数.
您可以从MATLAB文档中阅读有关'return'命令和错误处理的更多信息,
http://www.mathworks.com/access/helpdesk/help/techdoc/ref/return.html
您可以只输入错误命令(如错误的用户输入'),它应该停止脚本.
编辑:或者,除非将输入标志设置为true,否则您可以重构代码以使其不运行.就像是
inp = input('>', s)
if validateInput(inp)
%do you stuff here or call your main function
else
fprintf('Invalid input')
end
Run Code Online (Sandbox Code Playgroud)