MATLAB消息ID的最佳实践?

jjk*_*ker 14 matlab warnings coding-style exception error-code

当创建MATLAB异常(MException对象)或打印警告或错误消息时,MATLAB允许您提供消息ID来定义您正在抛出的异常.

消息ID的格式为:

component:mnemonic
Run Code Online (Sandbox Code Playgroud)

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

MATLAB:dispatcher:nameConflict
Run Code Online (Sandbox Code Playgroud)

因此,当您在自己的代码中使用异常时,您对消息ID使用了什么?您是否重用MATLAB的默认值?自己组成?您对组件和助记符字符串使用了什么?

gno*_*ice 12

我通常遵循此模式来获取错误(或警告)消息标识符,其中括号中的内容可能存在,也可能不存在:

(className):(parentFunction):functionWhereErrorOccurs:descriptiveMnemonic
Run Code Online (Sandbox Code Playgroud)

组件是:

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

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

  • functionWhereErrorOccurs:这个组件的名称非常明显.;)

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

classNameparentFunction部件可以被认为有些多余,因为stack属性的的MException已经识别到母体m文件和错误的行号的完整路径.但是,消息标识符的目的之一是它允许您唯一地标识错误,而不仅仅是寻找错误源.

假设你有一个函数myFcn和一个myClass重载的类myFcn.如果作出的第一个的错误消息标识符是myFcn:maxIterationsReached和用于第二之一的错误消息标识符是myClass:myFcn:maxIterationsReached,这将允许您,例如,设置有一个断点DBSTOP该停止仅当通过产生该错误的执行myClass\myFcn,而不是myFcn.同样,唯一的警告消息标识符非常有用,您可以专门选择忽略特定功能的警告,同时让其他功能显示.

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