我有两个MATLAB功能:问MATLAB发出蜂鸣声(或发邮件给我)对任何错误
email_me_this(text)
beep_now
,我可以打电话给我发电子邮件字符串,在计算机上发出嘟嘟声。
我想在MATLAB中执行脚本时出现问题时调用这些函数。我认为我可以用try catch
块来做到这一点,但是我想知道是否有其他方法可以在整个MATLAB会话中以一般级别强制执行此操作。
我有两个MATLAB功能:问MATLAB发出蜂鸣声(或发邮件给我)对任何错误
email_me_this(text)
beep_now
,我可以打电话给我发电子邮件字符串,在计算机上发出嘟嘟声。
我想在MATLAB中执行脚本时出现问题时调用这些函数。我认为我可以用try catch
块来做到这一点,但是我想知道是否有其他方法可以在整个MATLAB会话中以一般级别强制执行此操作。
您可能会超载ERROR函数。因此,您的代码将在上每执行一次错误时执行。
function error(varargin)
%# email message. Note that varargin{2} contains error information, unless there is
%# only one input that is a structure.
email_me_this('there has been an error')
beep_now
%# call the builtin function error.m
builtin('error',varargin{:})
嗯,当我调用'beep_now'时,出现以下错误,如果我重载'错误'函数'???达到500的最大递归限制。使用set(0,'RecursionLimit',N) 来更改限制。请注意,超出你的可用堆栈空间可能会导致MATLAB和/或你的计算机崩溃。' –
事实上,我注意到如果我在我的重载函数error.m中有以下行:'disp('error'); ',我看到在正常操作(例如用Ctrl-D打开文件)上打印的单词“错误”。 –
@intrpc:如果你对'beep_now'的调用产生了一个错误,它会调用错误,调用'beep_now',这会产生一个错误,依此类推。因此,您应该重命名我们的'错误'函数,并确保beep_now正常工作。此外,错误是由许多函数抛出,然后由try/catch语句捕获。不幸的是,当这种情况发生时,你的重载函数也会被执行。 – Jonas
try-catch确实是最好的选择。任何你不想使用它的理由? – Rasman