2
MatLab中是否有可能在嵌套函数中引发异常,并让它被更高级的函数(如C++或Visual Basic)“捕获”?MatLab'catch'比'try'更高吗?
MatLab中是否有可能在嵌套函数中引发异常,并让它被更高级的函数(如C++或Visual Basic)“捕获”?MatLab'catch'比'try'更高吗?
很有可能在更高层次上发现异常。我认为不可行的是在另一个层面上捕捉异常,而不是在尝试的地方。但我不确定。 try catch在matlab中实现相当简单。它真的以自动魔法的方式解决了自己。在try块内部抛出异常是可能的,然后它会被捕获。也可以围绕可能在try块内出错的代码,然后捕获异常。
使用抛出:
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中定义的变量。
你的意思是['rethrow'](http://es.mathworks.com/help/matlab/ref/rethrow.html)? – 2015-02-05 21:43:29
@LuisMendo在这里不会'抛出'更好吗? OP在捕捉它之后不会再写入任何有关抛出异常的内容。我认为他想要的是“抛出”一个异常,并将它抓得更高。如果异常没有被明确抛出,对于所有的异常也是自动的,这也是matlab异常(例如索引超出范围等等)。 – patrik 2015-02-06 09:39:13
如果你可以扔掉它,直到更高的级别,它是没有被捕获的(我真的不知道它是如何工作的)。 – 2015-02-06 09:53:09