创建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和parentFunction部件
可以被认为有些多余,因为
stack属性的的
MException类已经识别到母体m文件和错误的行号的完整路径。但是,
消息标识符的目的之一是,它使您可以
唯一地标识错误,而不仅仅是寻找错误源。
假设您有一个函数myFcn和一个类myClass重载myFcn 。如果将第一个错误消息标识符设为myFcn:maxIterationsReached ,将第二个错误消息标识符设为myClass:myFcn:maxIterationsReached ,则这将允许您例如使用
DBSTOP设置断点,该断点仅在以下情况下才暂停执行:此错误是由myClass\myFcn而不是myFcn 。同样,唯一的
警告消息标识符很有用,因为您可以特别选择
忽略 特定功能的
警告 ,而只显示其他功能。
此外,您还可以在标识符中包括一些组件,这些组件指示发生错误的功能位于
程序包文件夹或
私有文件夹中 (但这可能会使标识符很长)。
更多&回答...