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
明确表示我没有传递足够的论据.我总是使用较低的驼峰案例作为助记符,其中一个单词的第一个字母大写,除了第一个单词.
的className
和parentFunction
部件可以被认为有些多余,因为stack
属性的的MException
类已经识别到母体m文件和错误的行号的完整路径.但是,消息标识符的目的之一是它允许您唯一地标识错误,而不仅仅是寻找错误源.
假设你有一个函数myFcn
和一个myClass
重载的类myFcn
.如果作出的第一个的错误消息标识符是myFcn:maxIterationsReached
和用于第二之一的错误消息标识符是myClass:myFcn:maxIterationsReached
,这将允许您,例如,设置有一个断点DBSTOP该停止仅当通过产生该错误的执行myClass\myFcn
,而不是myFcn
.同样,唯一的警告消息标识符非常有用,您可以专门选择忽略特定功能的警告,同时让其他功能显示.
此外,您还可以在标识符中包含组件,指示发生错误的函数位于包文件夹或私有文件夹中(但这可能会产生相当长的标识符).