2011-09-06 42 views
1

我有两个MATLAB功能:问MATLAB发出蜂鸣声(或发邮件给我)对任何错误

  • email_me_this(text)
  • beep_now

,我可以打电话给我发电子邮件字符串,在计算机上发出嘟嘟声。

我想在MATLAB中执行脚本时出现问题时调用这些函数。我认为我可以用try catch块来做到这一点,但是我想知道是否有其他方法可以在整个MATLAB会话中以一般级别强制执行此操作。

+1

try-catch确实是最好的选择。任何你不想使用它的理由? – Rasman

回答

1

您可能会超载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{:}) 
+0

嗯,当我调用'beep_now'时,出现以下错误,如果我重载'错误'函数'???达到500的最大递归限制。使用set(0,'RecursionLimit',N) 来更改限制。请注意,超出你的可用堆栈空间可能会导致MATLAB和/或你的计算机崩溃。' –

+0

事实上,我注意到如果我在我的重载函数error.m中有以下行:'disp('error'); ',我看到在正常操作(例如用Ctrl-D打开文件)上打印的单词“错误”。 –

+1

@intrpc:如果你对'beep_now'的调用产生了一个错误,它会调用错误,调用'beep_now',这会产生一个错误,依此类推。因此,您应该重命名我们的'错误'函数,并确保beep_now正常工作。此外,错误是由许多函数抛出,然后由try/catch语句捕获。不幸的是,当这种情况发生时,你的重载函数也会被执行。 – Jonas