2016-06-28 65 views
1

Matlab將在未來的版本中刪除narchk函數,我試圖改變一些代碼來使用narginck。現在使用nargchk,輸出是一個字符串,我可以將它傳遞給if語句來顯示我自己的錯誤消息。像有沒有辦法用matlab中的narginchk生成自定義錯誤信息?

if ~isempty(nargchk(min, max, nargin)) 
    error('custom error message') 
end 

narginchk東西會自動給出了一個錯誤不是一個字符串,所以我想知道如果有一種方式讓與narginchk

+0

爲什麼要用'nargchk'?只需使用'nargin'並檢查一下自己。 – Suever

+0

if語句中實際上有更多的條件,我沒有寫,所以它看起來很醜。這就是我將要做的,但如果narginchk不起作用 – Elenasto

回答

1

自定義錯誤消息時,無法提供自定義錯誤消息nargchk及相關功能。

您的情況沒有必要使用nargchk,因爲您不需要默認值或任何值,只需檢查nargin的值即可。

if nargin > max || nargin < min 
    error('custom error message'); 
end 

或者,你可以使用assert消除if聲明。

assert(nargin <= max && nargin >= min, 'Custom Error Message'); 

如果你真的想使用這些功能之一,你可以換它try/catch語句內,並提供自定義錯誤消息

try 
    narginchk(min, max, nargin) 
catch ME 
    throw(MException(ME.identifier, 'my custom message')) 
end 
+0

我當然可以這樣做,除了if語句實際上還有其他幾個條件,我沒有寫在那裏。所以代碼最終看起來有點醜陋。如果沒有narginchk的解決方法,那我可能最終會做什麼 – Elenasto

+0

@SharanBanagiri你總是可以使你的驗證成爲一個子函數,將某個功能封裝在某個地方並清理乾淨。但是,不,沒有辦法指定'narginchk'的自定義錯誤 – Suever

+0

@SharanBanagiri我已經添加了另一種方法,使用'try' /'catch' – Suever

相關問題