Ответ 1
Я обычно следую этому шаблону для ошибки (или предупреждения) идентификаторов сообщений, где в скобках могут присутствовать или не присутствовать:
(className):(parentFunction):functionWhereErrorOccurs:descriptiveMnemonic
Компоненты:
-
className
: Имя класса, если функция, в которой возникает ошибка, является методом/конструктором. -
parentFunction
: Если функция, в которой происходит ошибка, является подфункцией в m файле или вложенная функция, это будет основная функция m файла или родительский элемент вложенной функции, соответственно. Поэтому вы можете иметь несколько компонентовparentFunction
. -
functionWhereErrorOccurs
: Название этого компонента довольно понятно.;) -
descriptiveMnemonic
: Я подчеркиваю описательный. Например,inputError
на самом деле ничего не говорит мне, ноnotEnoughInputs
дает понять, что я не передал достаточно аргументов. Я всегда использую более низкий случай верблюда для мнемоники, где первая буква слова капитализируется за исключением самого первого слова.
Компоненты className
и parentFunction
можно считать несколько избыточными, поскольку свойство stack
MException
class уже идентифицирует полный путь к родительскому m файлу и номер строки ошибки. Однако одной из целей идентификатора сообщения является то, что он позволяет однозначно идентифицировать ошибку для целей, отличных от того, как просто искать источник ошибка.
Скажем, у вас есть функция myFcn
и класс myClass
, который перегружает myFcn
. Если вы сделаете идентификатор сообщения об ошибке для первого, укажите myFcn:maxIterationsReached
, а идентификатор сообщения об ошибке для второго - myClass:myFcn:maxIterationsReached
, это позволит вам, например, установить точку останова с DBSTOP, который останавливает выполнение только тогда, когда эта ошибка создается myClass\myFcn
, а не myFcn
. Кроме того, уникальные идентификаторы предупреждающих сообщений полезны тем, что вы можете специально выбрать игнорировать предупреждения из определенных функций, позволяя другим отображаться.
Кроме того, вы также можете включить компоненты в идентификатор, указывающие, что функция, в которой происходит ошибка, находится в папке или частная папка (но это может привести к довольно длинному идентификатору).