我有兩個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