当创建MATLAB异常(MException对象)或打印警告或错误消息时,MATLAB允许您提供一个消息ID,用于定义您正在抛出的除外。
消息ID的格式为:
component:mnemonic
例如,MATLAB自己的未定义变量消息ID是:
MATLAB:dispatcher:nameConflict
因此,当您在自己的代码中使用异常时,您对消息ID使用了什么?您是否重用MATLAB的默认值?自己组成?您对组件和助记符字符串使用了什么?
答案 0 :(得分:12)
我通常会遵循这种模式来表示错误(或警告)message identifiers,其中括号中的内容可能存在也可能不存在:
(className):(parentFunction):functionWhereErrorOccurs:descriptiveMnemonic
组件是:
className
:类的名称,如果发生错误的函数是方法/构造函数。
parentFunction
:如果发生错误的函数是subfunction in an m-file或nested function,那么这将是primary m-file function或嵌套函数的父级, 分别。因此,您可以拥有多个parentFunction
组件。
functionWhereErrorOccurs
:此组件的名称非常明显。 ;)
descriptiveMnemonic
:我强调描述性。例如inputError
并没有真正告诉我任何事情,但notEnoughInputs
清楚地表明我没有传递足够的参数。我总是使用较低的驼峰案例作为助记符,其中一个单词的第一个字母大写,除了第一个单词。
className
和parentFunction
组件可能被视为有些多余,因为stack
property的MException
class已经确定了完整路径父m文件和错误的行号。但是,message identifier的目的之一是它允许您唯一地识别错误,而不仅仅是寻找错误的来源。
假设您有一个函数myFcn
和一个重载myClass
的类myFcn
。如果您为第一个生成错误消息标识符myFcn:maxIterationsReached
并且第二个错误消息标识符为myClass:myFcn:maxIterationsReached
,则允许您例如使用{{3}设置断点只有当myClass\myFcn
而不是myFcn
产生此错误时才会暂停执行。同样,唯一的警告消息标识符非常有用,因为您可以专门从特定的功能中选择DBSTOP,同时让其他人显示。
此外,您还可以在标识符中包含组件,指示发生错误的函数位于ignore warnings或package folder中(但这可能会产生相当长的标识符)。< / p>
答案 1 :(得分:3)
在我的作品中,我使用YMA :( mainFunctionName):( descriptiveMnemonic),其中YMA只是我的首字母缩写。例如,我UIInspect utility中调用的所有警告和错误的ID都与YMA:uiinspect:XXX
类似。