MatLab'捕获'能否达到比'尝试'更高的水平?

时间:2015-02-05 21:34:33

标签: matlab try-catch

在MatLab中是否可以在嵌套函数中抛出异常,并使用更高的函数“捕获”它,例如在C ++或Visual Basic中?

1 个答案:

答案 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中定义的变量中。