Matlab:打开和关闭try / catch以进行调试

问题描述 投票:4回答:3

我正在使用try-catch语句进行冗长的计算,类似于以下内容:

for i=1:1000
    try 
        %do a lot of stuff
    catch me
        sendmail('[email protected]', 'Error in Matlab', parse_to_string(me));
    end
end

[在编写代码时,我不想跳到catch语句,因为我喜欢Matlabs dbstop if error功能。我知道可以使用dbstop if all error以避免在catch语句中跳转(我在这里找到了http://www.mathworks.com/matlabcentral/newsreader/view_thread/102907。)

但是问题是Matlab有很多内置函数,这些函数会引发由其他内置函数捕获和处理的错误。我只想停止我造成的错误。

我的方法是使用一些类似于]的语句>

global debugging; % set from outside my function as global variable
for i=1:1000
    if  ~debugging 
        try 
    end

        %do a lot of stuff

    if  ~debugging
        catch me
            sendmail('[email protected]', 'Error in Matlab', parse_to_string(me));
        end
    end 
end

这不起作用,因为Matlab看不到try and catch属于彼此。

调试时是否有更好的方法来处理try/catch语句?我一直在评论try/catch,但这很烦人而且麻烦。

我正在使用try-catch语句进行冗长的计算,类似于以下内容:对于i = 1:1000,请尝试%do做很多事情将我抓到sendmail('[email protected]','Matlab中的错误', ...

matlab debugging if-statement try-catch
3个回答
4
投票

您正在寻找的解决方案是dbstop if caught error


1
投票
for i=1:1000
    try 
        %do a lot of stuff
    catch me
        if ~debugging
             sendmail('[email protected]', 'Error in Matlab', parse_to_string(me));
        else
             rethrow(me)
        end
    end
end

0
投票

您可以在Matlab documentation中看到,dbclear all会删除所有MATLAB®代码文件中的所有断点,以及为错误,捕获的错误,捕获的错误标识符,警告,警告标识符和naninf设置的所有断点。

© www.soinside.com 2019 - 2024. All rights reserved.