2010-06-24 94 views
13

當創建MATLAB異常(MException對象)或打印警告或錯誤消息時,MATLAB允許您提供一個消息ID,用於定義除了您正在拋出的信息之外的信息。MATLAB消息ID的最佳實踐?

消息ID的格式爲:

component:mnemonic 

例如,MATLAB自身的不確定變量消息ID是:

MATLAB:dispatcher:nameConflict 

所以,當你在自己的代碼中使用異常,你是什麼用於消息ID?你重用MATLAB的默認值嗎?彌補你自己?你使用什麼組件和助記符字符串?

回答

11

我一般遵循此模式爲錯誤(或警告)message identifiers,那裏的東西在括號可以或可以不存在:

(className):(parentFunction):functionWhereErrorOccurs:descriptiveMnemonic 

的組件包括:

  • className:名稱如果發生錯誤的函數是一個方法/構造函數。

  • parentFunction:如果發生錯誤,所述函數是subfunction in an m-filenested function,這將是分別與primary m-file function或嵌套函數的父。因此您可以有多個parentFunction組件。

  • functionWhereErrorOccurs:這個組件的名稱是不言自明的。 ;)

  • descriptiveMnemonic:我強調描述性。例如inputError並沒有真正告訴我任何事情,但notEnoughInputs明確表示我沒有通過足夠的論據。我總是使用較低的駱駝案例作爲助記符,除了第一個單詞外,單詞的第一個字母大寫。

classNameparentFunction部件可以被認爲有些多餘,因爲MException classstack property已經識別到母體m文件和錯誤的行號的完整路徑。然而,message identifier的目的之一是它允許您以唯一的方式用於識別錯誤,而不僅僅是查找錯誤的來源。

比方說,你有一個功能myFcn和一個myClass類重載myFcn。如果第一個錯誤消息標識符爲myFcn:maxIterationsReached,而第二個錯誤消息標識符爲myClass:myFcn:maxIterationsReached,則這允許您例如設置一個斷點,該斷點僅在myClass\myFcn產生該錯誤時暫停執行而不是myFcn。同樣,獨特的警告消息標識符很有用,因爲您可以專門從特定函數中選擇ignore warnings,同時讓其他人顯示。

此外,還可以在標識符中包含組件,指示發生錯誤的函數位於package folderprivate folder(但這可能會使標識符較長)。

+0

嘿...第二次你幫我了。 – JnBrymn 2011-03-07 21:53:57

+0

@gnovice您是否使用完全限定的類名,並且包之前? – 2015-04-15 07:17:20

+0

@ b3。隨你便。我可能會盡可能使其具體化。 – gnovice 2015-04-15 12:45:57

3

在我的工作中,我使用YMA:(mainFunctionName):(descriptiveMnemonic),其中YMA只是我的名字首字母。例如,我的UIInspect utility中調用的所有警告和錯誤的ID都與YMA:uiinspect:XXX類似。