在创建 MATLAB 异常(MException 对象)或打印警告或错误消息时,MATLAB 允许您提供一个消息 ID,该 ID 定义您要抛出的异常。
消息 ID 的格式为:
component:mnemonic
例如,MATLAB 自己的未定义变量消息 ID 为:
MATLAB:dispatcher:nameConflict
那么当你在自己的代码中使用异常时,你用什么作为消息ID呢?您是否重用 MATLAB 的默认设置?自己编?您对组件和助记符字符串使用什么?
在创建 MATLAB 异常(MException 对象)或打印警告或错误消息时,MATLAB 允许您提供一个消息 ID,该 ID 定义您要抛出的异常。
消息 ID 的格式为:
component:mnemonic
例如,MATLAB 自己的未定义变量消息 ID 为:
MATLAB:dispatcher:nameConflict
那么当你在自己的代码中使用异常时,你用什么作为消息ID呢?您是否重用 MATLAB 的默认设置?自己编?您对组件和助记符字符串使用什么?
对于错误(或警告)消息标识符,我通常遵循这种模式,括号中的内容可能存在也可能不存在:
(className):(parentFunction):functionWhereErrorOccurs:descriptiveMnemonic
组件是:
className
:类的名称,如果发生错误的函数是方法/构造函数。
parentFunction
: 如果发生错误的函数是m 文件中的子函数或嵌套函数,则这将分别是主 m 文件函数或嵌套函数的父函数。因此,您可以拥有多个parentFunction
组件。
functionWhereErrorOccurs
: 这个组件的名称是不言自明的。;)
descriptiveMnemonic
: 我强调描述性。例如inputError
,并没有真正告诉我任何事情,但notEnoughInputs
清楚地表明我没有传递足够的论据。我总是使用小驼峰式来表示助记符,除了第一个单词外,单词的第一个字母大写。
和组件可能被认为有些多余,因为类的属性className
已经标识了父 m 文件的完整路径和错误的行号。但是,消息标识符的用途之一是它允许您唯一地识别错误,而不仅仅是寻找错误的来源。parentFunction
stack
MException
假设您有一个函数myFcn
和一个myClass
重载的类myFcn
。如果您为第一个 be 设置myFcn:maxIterationsReached
错误消息标识符,为第二个 be 设置错误消息标识符myClass:myFcn:maxIterationsReached
,例如,这将允许您使用DBSTOP设置一个断点,仅当此错误由myClass\myFcn
and not产生时才停止执行myFcn
。同样,唯一的警告消息标识符很有用,因为您可以专门选择忽略来自特定功能的警告,同时让其他功能显示。
在我的工作中,我使用 YMA:(mainFunctionName):(descriptiveMnemonic),其中 YMA 只是我的首字母缩写。例如,在我的UIInspect 实用程序中调用的所有警告和错误的ID 都类似于YMA:uiinspect:XXX
.