2010-06-24 70 views
13

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

消息ID的格式为:

component:mnemonic 

例如,MATLAB自身的不确定变量消息ID是:

MATLAB:dispatcher:nameConflict 

所以,当你在自己的代码中使用异常,你是什么用于消息ID?你重用MATLAB的默认值吗?弥补你自己?你使用什么组件和助记符字符串?

回答

11

我一般遵循此模式为错误(或警告)message identifiers,那里的东西在括号可以或可以不存在:

(className):(parentFunction):functionWhereErrorOccurs:descriptiveMnemonic 

的组件包括:

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

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

  • functionWhereErrorOccurs:这个组件的名称是不言自明的。 ;)

  • descriptiveMnemonic:我强调描述性。例如inputError并没有真正告诉我任何事情,但notEnoughInputs明确表示我没有通过足够的论据。我总是使用较低的骆驼案例作为助记符,除了第一个单词外,单词的第一个字母大写。

classNameparentFunction部件可以被认为有些多余,因为MException classstack property已经识别到母体m文件和错误的行号的完整路径。然而,message identifier的目的之一是它允许您以唯一的方式用于识别错误,而不仅仅是查找错误的来源。

比方说,你有一个功能myFcn和一个myClass类重载myFcn。如果第一个错误消息标识符为myFcn:maxIterationsReached,而第二个错误消息标识符为myClass:myFcn:maxIterationsReached,则这允许您例如设置一个断点,该断点仅在myClass\myFcn产生该错误时暂停执行而不是myFcn。同样,独特的警告消息标识符很有用,因为您可以专门从特定函数中选择ignore warnings,同时让其他人显示。

此外,还可以在标识符中包含组件,指示发生错误的函数位于package folderprivate folder(但这可能会使标识符较长)。

+0

嘿...第二次你帮我了。 – JnBrymn 2011-03-07 21:53:57

+0

@gnovice您是否使用完全限定的类名,并且包之前? – 2015-04-15 07:17:20

+0

@ b3。随你便。我可能会尽可能使其具体化。 – gnovice 2015-04-15 12:45:57

3

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