在MatLab中是否可以在嵌套函数中抛出异常,并使用更高的函数“捕获”它,例如在C ++或Visual Basic中?
答案 0 :(得分:1)
很有可能在更高级别捕获异常然后它们发生。我认为不起作用的是在另一个层面捕获异常,而不是尝试。虽然我不确定。 try catch在matlab中实现起来相当简单。它真的以一种自动神奇的方式解决了自己。可以在try块中抛出异常,然后它将被捕获。也可以在try块中包含可能出错的代码,然后捕获异常。
使用throw:
function mymain()
x=[1,2];
try
myfun(x);
catch me
disp(me);
error(me.message);
end
end
function myfun(x)
if (length(x)>1)
throw(MException('MATLAB:badsubscript','x must be scalar!'));
end
end
不使用任何东西:
function mymain2()
x=[1,2];
try
myfun2(x);
catch me
disp(me);
error(me.message);
end
end
function myfun2(x)
x(7);
end
变量me
未定义为您自己实际定义变量me
。相反,matlab会创建一个异常,然后将异常存储在catch中定义的变量中。