poster
2019-12-10, 20:42
创建MATLAB异常(MException对象)或打印警告或错误消息时,MATLAB允许您提供一个消息ID,该ID定义要抛出的异常。
消息ID的格式为:
component:mnemonic 例如,MATLAB自己的未定义变量消息ID为:
MATLAB:dispatcher:nameConflict 因此,当您在自己的代码中使用异常时,您将如何使用消息ID?您是否重用了MATLAB的默认值?弥补自己的?您如何使用组件和助记符字符串?
回答:
我通常遵循以下模式来获取错误(或警告) 消息标识符 (http://www.mathworks.com/access/helpdesk/help/techdoc/matlab_prog/bq9l448-1.html#bq9tdlq-1) ,其中括号内的内容可能存在也可能不存在:
(className):(parentFunction):functionWhereErrorOccurs:descriptiveMnemonic 这些组件是:
className :类的名称,如果发生错误的函数是方法/构造函数。
parentFunction :如果发生错误的函数是m文件 (http://www.mathworks.com/access/helpdesk/help/techdoc/matlab_prog/f4-70666.html)或嵌套函数中 (http://www.mathworks.de/access/helpdesk/help/techdoc/matlab_prog/f4-39683.html)的子函数,则 (http://www.mathworks.com/access/helpdesk/help/techdoc/matlab_prog/f4-70666.html)分别为主要m文件函数 (http://www.mathworks.com/access/helpdesk/help/techdoc/matlab_prog/f4-39629.html)或嵌套函数的父级。因此,您可以具有多个parentFunction组件。
functionWhereErrorOccurs :该组件的名称非常不言自明。 ;)
descriptiveMnemonic :我强调描述性 。例如, inputError并没有真正告诉我任何事情,但是notEnoughInputs清楚地表明我没有传递足够的参数。对于助记符,我总是使用小写的驼峰大小写,即单词的第一个字母除第一个单词外均大写。
的className和parentFunction部件可以被认为有些多余,因为stack属性 (http://www.mathworks.com/access/helpdesk/help/techdoc/matlab_prog/bq9l448-1.html#bq9no0f-1)的的MException类 (http://www.mathworks.com/access/helpdesk/help/techdoc/matlab_prog/bq9l448-1.html#bq9l5ac)已经识别到母体m文件和错误的行号的完整路径。但是, 消息标识符 (http://www.mathworks.com/access/helpdesk/help/techdoc/matlab_prog/bq9l448-1.html#bq9tdlq-1)的目的之一是,它使您可以唯一地标识错误,而不仅仅是寻找错误源。
假设您有一个函数myFcn和一个类myClass重载myFcn 。如果将第一个错误消息标识符设为myFcn:maxIterationsReached ,将第二个错误消息标识符设为myClass:myFcn:maxIterationsReached ,则这将允许您例如使用DBSTOP (http://www.mathworks.com/access/helpdesk/help/techdoc/ref/dbstop.html)设置断点,该断点仅在以下情况下才暂停执行:此错误是由myClass\myFcn而不是myFcn 。同样,唯一的警告消息标识符很有用,因为您可以特别选择忽略 (http://www.mathworks.com/access/helpdesk/help/techdoc/matlab_prog/f3-39022.html) 特定功能的警告 (http://www.mathworks.com/access/helpdesk/help/techdoc/matlab_prog/f3-39022.html) ,而只显示其他功能。
此外,您还可以在标识符中包括一些组件,这些组件指示发生错误的功能位于程序包文件夹 (http://www.mathworks.com/access/helpdesk/help/techdoc/matlab_oop/brfynt_-1.html)或私有文件夹中 (http://www.mathworks.nl/access/helpdesk/help/techdoc/matlab_prog/f4-70335.html) (但这可能会使标识符很长)。
更多&回答... (https://stackoverflow.com/questions/3110890)
消息ID的格式为:
component:mnemonic 例如,MATLAB自己的未定义变量消息ID为:
MATLAB:dispatcher:nameConflict 因此,当您在自己的代码中使用异常时,您将如何使用消息ID?您是否重用了MATLAB的默认值?弥补自己的?您如何使用组件和助记符字符串?
回答:
我通常遵循以下模式来获取错误(或警告) 消息标识符 (http://www.mathworks.com/access/helpdesk/help/techdoc/matlab_prog/bq9l448-1.html#bq9tdlq-1) ,其中括号内的内容可能存在也可能不存在:
(className):(parentFunction):functionWhereErrorOccurs:descriptiveMnemonic 这些组件是:
className :类的名称,如果发生错误的函数是方法/构造函数。
parentFunction :如果发生错误的函数是m文件 (http://www.mathworks.com/access/helpdesk/help/techdoc/matlab_prog/f4-70666.html)或嵌套函数中 (http://www.mathworks.de/access/helpdesk/help/techdoc/matlab_prog/f4-39683.html)的子函数,则 (http://www.mathworks.com/access/helpdesk/help/techdoc/matlab_prog/f4-70666.html)分别为主要m文件函数 (http://www.mathworks.com/access/helpdesk/help/techdoc/matlab_prog/f4-39629.html)或嵌套函数的父级。因此,您可以具有多个parentFunction组件。
functionWhereErrorOccurs :该组件的名称非常不言自明。 ;)
descriptiveMnemonic :我强调描述性 。例如, inputError并没有真正告诉我任何事情,但是notEnoughInputs清楚地表明我没有传递足够的参数。对于助记符,我总是使用小写的驼峰大小写,即单词的第一个字母除第一个单词外均大写。
的className和parentFunction部件可以被认为有些多余,因为stack属性 (http://www.mathworks.com/access/helpdesk/help/techdoc/matlab_prog/bq9l448-1.html#bq9no0f-1)的的MException类 (http://www.mathworks.com/access/helpdesk/help/techdoc/matlab_prog/bq9l448-1.html#bq9l5ac)已经识别到母体m文件和错误的行号的完整路径。但是, 消息标识符 (http://www.mathworks.com/access/helpdesk/help/techdoc/matlab_prog/bq9l448-1.html#bq9tdlq-1)的目的之一是,它使您可以唯一地标识错误,而不仅仅是寻找错误源。
假设您有一个函数myFcn和一个类myClass重载myFcn 。如果将第一个错误消息标识符设为myFcn:maxIterationsReached ,将第二个错误消息标识符设为myClass:myFcn:maxIterationsReached ,则这将允许您例如使用DBSTOP (http://www.mathworks.com/access/helpdesk/help/techdoc/ref/dbstop.html)设置断点,该断点仅在以下情况下才暂停执行:此错误是由myClass\myFcn而不是myFcn 。同样,唯一的警告消息标识符很有用,因为您可以特别选择忽略 (http://www.mathworks.com/access/helpdesk/help/techdoc/matlab_prog/f3-39022.html) 特定功能的警告 (http://www.mathworks.com/access/helpdesk/help/techdoc/matlab_prog/f3-39022.html) ,而只显示其他功能。
此外,您还可以在标识符中包括一些组件,这些组件指示发生错误的功能位于程序包文件夹 (http://www.mathworks.com/access/helpdesk/help/techdoc/matlab_oop/brfynt_-1.html)或私有文件夹中 (http://www.mathworks.nl/access/helpdesk/help/techdoc/matlab_prog/f4-70335.html) (但这可能会使标识符很长)。
更多&回答... (https://stackoverflow.com/questions/3110890)