有没有办法指定在Matlab中发生错误时要运行的代码?谷歌搜索我遇到了RunTimeErrorFcn和daqcallback,但我相信这些特定于数据采集工具箱。当我遇到一个bug时,我想要一些东西,比如访问一个未分配的变量。 (我使用一个名为PsychToolbox的库来接管GPU,所以我希望能够在返回命令提示符之前清除它的屏幕。)
答案 0 :(得分:5)
答案 1 :(得分:5)
如果将代码包装在TRY/CATCH块中,则可以在发生错误时执行代码,可以使用MEXCEPTION对象根据特定错误自定义代码。
try
% do something here
catch me
% execute code depending on the identifier of the error
switch me.identifier
case 'something'
% run code specifically for the error with identifier 'something'
otherwise
% display the unhandled errors; you could also report the stack in me.stack
disp(me.message)
end % switch
end % try/catch
答案 2 :(得分:0)
如果有人使用GUI并希望进行“全局”错误检测,那么解决方案可能看起来像这样......
function varargout = Program(varargin)
try
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @program_OpeningFcn, ...
'gui_OutputFcn', @program_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
catch exception
beep
h = errordlg('Unexpected error, the program will be restarted.','Syntax
error','modal');
uiwait(h)
Program
end