Simulink® позволяет вам сообщать об ошибке путем выдавания исключения с помощью MSLException объект, который является подклассом MATLAB®
MException класс. Как с MException MATLAB объект, можно использовать try-catch блокируйтесь с MSLException возразите построению, чтобы получить информацию об ошибке. Первичное различие между MSLException и MException объекты состоят в том что MSLException объект имеет дополнительное свойство указателей. Эти указатели позволяют вам идентифицировать объект, сопоставленный с ошибкой.
MSLException класс имеет пять свойств: identifierсообщениестек, cause, и handles. Первые четыре из этих свойств идентичны тем из MException. Для получения дальнейшей информации о них, смотрите MException. Пятое свойство, handles, массив ячеек с элементами, которые удваивают массив. Эти элементы содержат указатели на объекты Simulink (блоки или блок-схемы) сопоставленный с ошибкой.
Методы для the MSLException класс идентичен тем из MException класс. Для получения дополнительной информации этих методов, смотрите MException.
Структура try-catch Simulink блок для получения исключения:
try Perform one or more operations catch E if isa(E, 'MSLException') ... end
Если операция в try оператор вызывает ошибку, catch оператор отлавливает исключение (E). Затем if isa условный оператор тестирует, чтобы определить, является ли исключением конкретный Simulink, т.е. MSLException. Другими словами, MSLException тип MException.
Следующий пример кода показывает, как сопоставить указатели с ошибкой.
errHndls = [];
try
sim('ModelName', ParamStruct);
catch e
if isa(e,'MSLException')
errHndls = e.handles{1}
end
end
Вы видите результаты путем исследования e. Они будут похожи на следующий выход:
e =
MSLException
Properties:
handles: {[7.0010]}
identifier: 'Simulink:Parameters:BlkParamUndefined'
message: [1x87 char]
cause: {0x1 cell}
stack: [0x1 struct]
Methods, SuperclassesЧтобы идентифицировать имя блока, который выдал ошибку, используйте getfullname команда. Для существующего примера введите следующую команду в командной строке MATLAB:
getfullname(errHndls)
Если бы блок по имени Му выдал ошибку из модели, названной vdp, MATLAB ответил бы на getfullname команда с:
ans = vdp/Mu