MATLAB消息ID的最佳实践?
-
29-09-2019 - |
题
当创建MATLAB异常(MEXception对象)或打印警告或错误消息时,MATLAB可让您提供一个消息ID,以定义您投掷。
消息ID为格式:
component:mnemonic
例如,MATLAB自己的未定义变量消息ID是:
MATLAB:dispatcher:nameConflict
因此,当您在自己的代码中使用异常时,您将用于消息ID的什么?您是否重复使用MATLAB的默认值?弥补自己的?您用于组件和助记符字符串什么?
解决方案
我通常遵循此模式以获取错误(或警告) 消息标识符, ,括号中的事物可能存在或可能不存在:
(className):(parentFunction):functionWhereErrorOccurs:descriptiveMnemonic
组件是:
className
: :类的名称,如果发生错误的函数是方法/构造函数。parentFunction
: :如果发生错误的功能是 M文件中的子功能 或a 嵌套功能, ,这将是 主要的M文件函数 或分别嵌套函数的父。因此,您可以有多个parentFunction
组件。functionWhereErrorOccurs
: :该组件的名称是非常不言自明的。 )descriptiveMnemonic
: :我强调 描述性. 。例如inputError
真的什么都告诉我,但是notEnoughInputs
清楚地表明,我没有通过足够的论点。我总是将较低的骆驼盒用于助记符,其中一个单词的第一个字母被大写了,除了第一个单词。
这 className
和 parentFunction
组件 可以 被认为有些多余,因为 stack
财产 的 MException
班级 已经确定了对父M文件的完整路径和错误的行号。但是,一个目的之一 消息标识符 是它允许您 独特 确定出于目的的错误,而不仅仅是追捕错误的源头。
假设你有一个功能 myFcn
和一堂课 myClass
那超载 myFcn
. 。如果您为第一个错误发送错误消息标识符 myFcn:maxIterationsReached
以及第二个的错误消息标识符 myClass:myFcn:maxIterationsReached
, ,这将使您可以通过 DBSTOP 只有在此错误产生的情况下才能停止执行 myClass\myFcn
并不是 myFcn
. 。同样,独特 警告 消息标识符很有用,您可以专门选择 忽略警告 从 具体的 在让他人显示时的功能。
此外,您还可以在标识符中包含组件,表明误差发生的函数位于A 包装文件夹 或a 私人文件夹 (但这可能会导致一个相当长的标识符)。
其他提示
在我的工作中,我使用YMA :( mainFunctionName):(描述性词素),其中YMA只是我的缩写。例如,在我的 Uiinspect实用程序 ID类似于 YMA:uiinspect:XXX
.