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