MATLAB消息ID的最佳实践?

时间:2010-06-24 14:32:26

标签: matlab exception coding-style warnings error-code

当创建MATLAB异常(MException对象)或打印警告或错误消息时,MATLAB允许您提供一个消息ID,用于定义您正在抛出的除外。

消息ID的格式为:

component:mnemonic

例如,MATLAB自己的未定义变量消息ID是:

MATLAB:dispatcher:nameConflict

因此,当您在自己的代码中使用异常时,您对消息ID使用了什么?您是否重用MATLAB的默认值?自己组成?您对组件和助记符字符串使用了什么?

2 个答案:

答案 0 :(得分:12)

我通常会遵循这种模式来表示错误(或警告)message identifiers,其中括号中的内容可能存在也可能不存在:

(className):(parentFunction):functionWhereErrorOccurs:descriptiveMnemonic

组件是:

  • className:类的名称,如果发生错误的函数是方法/构造函数。

  • parentFunction:如果发生错误的函数是subfunction in an m-filenested function,那么这将是primary m-file function或嵌套函数的父级, 分别。因此,您可以拥有多个parentFunction组件。

  • functionWhereErrorOccurs:此组件的名称非常明显。 ;)

  • descriptiveMnemonic:我强调描述性。例如inputError并没有真正告诉我任何事情,但notEnoughInputs清楚地表明我没有传递足够的参数。我总是使用较低的驼峰案例作为助记符,其中一个单词的第一个字母大写,除了第一个单词。

classNameparentFunction组件可能被视为有些多余,因为stack propertyMException class已经确定了完整路径父m文件和错误的行号。但是,message identifier的目的之一是它允许您唯一地识别错误,而不仅仅是寻找错误的来源。

假设您有一个函数myFcn和一个重载myClass的类myFcn。如果您为第一个生成错误消息标识符myFcn:maxIterationsReached并且第二个错误消息标识符为myClass:myFcn:maxIterationsReached,则允许您例如使用{{3}设置断点只有当myClass\myFcn而不是myFcn产生此错误时才会暂停执行。同样,唯一的警告消息标识符非常有用,因为您可以专门从特定的功能中选择DBSTOP,同时让其他人显示。

此外,您还可以在标识符中包含组件,指示发生错误的函数位于ignore warningspackage folder中(但这可能会产生相当长的标识符)。< / p>

答案 1 :(得分:3)

在我的作品中,我使用YMA :( mainFunctionName):( descriptiveMnemonic),其中YMA只是我的首字母缩写。例如,我UIInspect utility中调用的所有警告和错误的ID都与YMA:uiinspect:XXX类似。