Matlab错误功能结构错误标识符

时间:2019-03-31 00:53:01

标签: matlab error-handling

我正在编写一个自定义类,并想引发未定义的运算符错误(如执行{[]}*{[]}时会发生)。我知道我需要使用消息,堆栈和标识符创建错误结构。这是我遇到的最后一个问题,我不了解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.

但是我不知道什么是有效的标识符,因为帮助部分似乎只是转圈了。

我是否缺少有效标识符的列表?还是一些其他资源?

1 个答案:

答案 0 :(得分:1)

error命令将为您创建MException对象,并包含调用堆栈信息。您不应该自己创建这些。

只需使用您的新ID和消息调用error命令即可​​

error('foo:noBar','You did not foo bar.');

如果您真的想使用结构,请将这两条信息放入identifiermessage字段中:

myError.identifier = 'foo:noBar';
myError.message = 'You did not foo bar.';
error(myError)

但这只是前者的更详细的版本。我想如果保留带有错误的结构数组,这可能很有用,所以您只需要执行error(myErrors(3)),那样您的消息和ID就可以保持一致。