2016-06-28 112 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

相关问题