Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can MatLab';捕捉';处于高于'的水平;试试';? 在MATLAB中,在嵌套函数中抛出一个异常,并用较高的UP函数捕获,例如C++或VisualBasic?/P>< P>,很有可能在更高的级别捕获异常,然后发生异常。我认为不起作用的是在另一个级别捕获异常,而不是尝试所在的级别。不过我不确定。try-catch在matlab中实现起来相当简单。它真的以某种自动神奇的方式解决了自己。可以在try块内抛出异常,然后在catch中捕获异常。也可以将可能在try块中出错的代码包围起来,然后捕获异常_Matlab_Try Catch - Fatal编程技术网

Can MatLab';捕捉';处于高于'的水平;试试';? 在MATLAB中,在嵌套函数中抛出一个异常,并用较高的UP函数捕获,例如C++或VisualBasic?/P>< P>,很有可能在更高的级别捕获异常,然后发生异常。我认为不起作用的是在另一个级别捕获异常,而不是尝试所在的级别。不过我不确定。try-catch在matlab中实现起来相当简单。它真的以某种自动神奇的方式解决了自己。可以在try块内抛出异常,然后在catch中捕获异常。也可以将可能在try块中出错的代码包围起来,然后捕获异常

Can MatLab';捕捉';处于高于'的水平;试试';? 在MATLAB中,在嵌套函数中抛出一个异常,并用较高的UP函数捕获,例如C++或VisualBasic?/P>< P>,很有可能在更高的级别捕获异常,然后发生异常。我认为不起作用的是在另一个级别捕获异常,而不是尝试所在的级别。不过我不确定。try-catch在matlab中实现起来相当简单。它真的以某种自动神奇的方式解决了自己。可以在try块内抛出异常,然后在catch中捕获异常。也可以将可能在try块中出错的代码包围起来,然后捕获异常,matlab,try-catch,Matlab,Try Catch,使用投掷: 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!'));

使用投掷:

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

你的意思是?@LuisMendo不
throw
更适合这里?OP没有写任何关于捕获异常后再次抛出异常的内容。我认为他想要的是抛出一个异常,并在堆栈的更高层捕获它。如果没有显式抛出异常,那么对于所有的异常(例如索引越界等),这似乎也是自动的。如果您可以抛出异常并将其保持为未捕获状态,直到更高级别,则是(我不确定它是如何工作的)。如果有异常,则需要执行多个函数,我们希望从顶部函数继续执行,它将向调用的C代码返回一个错误代码。我们使用MATLAB编码器将MATLAB代码转换成C++。主程序是C++,调用MATLAB生成的C++,如果MATLAB异常,需要返回一个错误代码调用C++。