我正在使用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中的错误', ...
您正在寻找的解决方案是dbstop if caught error
。
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
您可以在Matlab documentation中看到,dbclear all
会删除所有MATLAB®代码文件中的所有断点,以及为错误,捕获的错误,捕获的错误标识符,警告,警告标识符和naninf设置的所有断点。