2010-08-04 222 views

回答

6

你可以把一個錯誤的命令,例如錯誤(「壞用戶輸入」),它應該停止腳本。

編輯:另外,您也可以只重構代碼不運行,除非你設置的輸入標誌是真實的。像

​​
+0

如果有多個地方的功能需要退出,這種解決方案會導致運行的樹它或不是那種如果陳述。不切實際的。 – Argyll 2014-06-16 20:01:07

13

我不知道你如何定義「退出」,但error似乎是你需要的功能。

y = input('Please input a non-negative number: '); 
if(y<0) 
    error('input must be non-negative'); 
end 

disp(sprintf('y=%f', y)); 
+0

雖然有效且容易,但對單個參數使用'error'並不是最好的。它可以防止諸如'lasterror'之類的東西完全工作。此外,參數中的特殊字符(如'\ n'')不會被轉換。 – horchler 2014-02-19 21:24:02

+0

我假設你建議使用MSGID參數,但我不知道如何實際提取。我注意到,即使在2017年,它需要這些參數是字符數組,而不是字符串...我討厭Matlab的人。 – ensignr 2017-10-12 02:56:48

7

嘿我想你可以使用try-catch組合來處理一些有些意想不到的錯誤,並對它做些什麼。

舉個例子,

function [ output ] = test(input) 

    Bmat = [ 1 1 1 ] % Some matrix 

    try 
    input*B; 
    catch ME 
    disp(ME.message) 
    return;   % This is the statement that exits your function 
    end 

end 

如果運行

>> test([1 1 1]) 

它不會因爲變量「輸入」和「B」有不匹配的內部尺寸的工作,但「嘗試」語句會拋出一個異常到'catch',並從那裏做你想做的任何事情。在這種情況下,它將在命令行中顯示錯誤消息並退出該功能。

變量「ME」這裏只是用於錯誤處理一個MATLAB對象,ME.message存儲包含解釋器陷入錯誤的類型的字符串。

我剛剛看了一遍你的問題......我想命令「迴歸」可能是你真正之後,你就可以用它來從任何邏輯或循環語句,以及功能退出。

你可以閱讀更多有關「迴歸」命令和錯誤從MATLAB文檔處理,

http://www.mathworks.com/access/helpdesk/help/techdoc/ref/return.html

+0

'return'工作,除非有多個輸出,否則會提示錯誤信息。我猜想,從Matlab錯誤的設計。 – Argyll 2014-06-16 20:04:03