14

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

消息 ID 的格式为:

component:mnemonic

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

MATLAB:dispatcher:nameConflict

那么当你在自己的代码中使用异常时,你用什么作为消息ID呢?您是否重用 MATLAB 的默认设置?自己编?您对组件和助记符字符串使用什么?

4

2 回答 2

12

对于错误(或警告)消息标识符,我通常遵循这种模式,括号中的内容可能存在也可能不存在:

(className):(parentFunction):functionWhereErrorOccurs:descriptiveMnemonic

组件是:

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

  • parentFunction: 如果发生错误的函数是m 文件中的子函数嵌套函数,则这将分别是主 m 文件函数或嵌套函数的父函数。因此,您可以拥有多个parentFunction组件。

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

  • descriptiveMnemonic: 我强调描述性。例如inputError,并没有真正告诉我任何事情,但notEnoughInputs清楚地表明我没有传递足够的论据。我总是使用小驼峰式来表示助记符,除了第一个单词外,单词的第一个字母大写。

和组件可能被认为有些多余,因为属性className已经标识了父 m 文件的完整路径和错误的行号。但是,消息标识符的用途之一是它允许您唯一地识别错误,而不仅仅是寻找错误的来源。parentFunctionstackMException

假设您有一个函数myFcn和一个myClass重载的类myFcn。如果您为第一个 be 设置myFcn:maxIterationsReached错误消息标识符,为第二个 be 设置错误消息标识符myClass:myFcn:maxIterationsReached,例如,这将允许您使用DBSTOP设置一个断点,仅当此错误由myClass\myFcnand not产生时才停止执行myFcn。同样,唯一的警告消息标识符很有用,因为您可以专门选择忽略来自特定功能的警告,同时让其他功能显示。

此外,您还可以在标识符中包含组件,指示发生错误的函数位于包文件夹私有文件夹中(但这可能会导致相当长的标识符)。

于 2010-06-24T15:26:16.430 回答
3

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

于 2010-06-24T17:51:30.550 回答