是否有一種簡單的方法來配置MATLAB腳本,以便在遇到未處理的異常時退出(而不是恢復到REPL)?腳本可以配置爲「退出未處理的異常」?
原因是當在(無監督)批處理模式下執行腳本的許多運行時,任何失敗的腳本都應該立即退出,並且不會在無人蔘與的交互提示下無限地掛起。
重要的澄清:這個腳本的目的是從Unix命令行執行,而不是從MATLAB交互式提示符執行。更具體地講,劇本與
matlab -nodesktop -nosplash -nojvm -r myscript.m
腳本應該始終終止MATLAB它已執行所有的代碼之後,並返回一個狀態代碼反映它的成功(0)或失敗(一些非調用零整數)。
我正在尋找一個全局設置(或命令行標誌),可以付諸實施,而不會影響代碼的其餘部分。
因此,我正在尋找類似於某些Unix shell(例如bash,zsh)中可用的-e
標誌的東西,該標誌在語句的返回狀態爲非零時立即中止腳本的作用這意味着聲明失敗)。
我知道,我可以換一個腳本的整個機身採用了try-catch
,像這樣(例如):
try
exit_code = 0;
%
% BODY OF SCRIPT
%
catch exc
fprintf(2, 'CAUGHT EXCEPTION:\n');
fprintf(2, '%s(%d): %s\n', exc.stack.file, exc.stack.line, exc.message);
exit_code = 1;
end
exit(exit_code);
...但是,正如我上面所說的,我尋找簡單的東西,對代碼沒有或至多是最小的影響。
甲'try' /'catch'對是做到這一點的唯一方法在外部文件中做到這一點。請注意,'exit'完全退出了MATLAB。你*可以*把腳本放在其他地方,並在你有「腳本的身體」的地方通過名稱來調用它,而不是修改腳本本身。另外,除非您啓用了'dbstop if error',否則您不應該獲得有關錯誤的交互式提示。你可以通過'dbclear'來禁用它。 – Suever