我正在编写一个自定义类,并想引发未定义的运算符错误(如执行{[]}*{[]}
时会发生)。我知道我需要使用消息,堆栈和标识符创建错误结构。这是我遇到的最后一个问题,我不了解MException
的工作方式。我尝试了以下代码
myError.stack = dbstack;
myError.identifier = MException('foo:noBar','You did not foo bar.');
myError.message = ['You did not foo bar.'];
error(myError)
但收到错误
Error using error
Field "identifier" of input structure must contain a valid MATLAB message identifier.
但是我不知道什么是有效的标识符,因为帮助部分似乎只是转圈了。
我是否缺少有效标识符的列表?还是一些其他资源?
答案 0 :(得分:1)
error
命令将为您创建MException
对象,并包含调用堆栈信息。您不应该自己创建这些。
只需使用您的新ID和消息调用error
命令即可
error('foo:noBar','You did not foo bar.');
如果您真的想使用结构,请将这两条信息放入identifier
和message
字段中:
myError.identifier = 'foo:noBar';
myError.message = 'You did not foo bar.';
error(myError)
但这只是前者的更详细的版本。我想如果保留带有错误的结构数组,这可能很有用,所以您只需要执行error(myErrors(3))
,那样您的消息和ID就可以保持一致。