Когда ваша программа обнаруживает отказ, который помешает ей завершаться как ожидалось или сгенерирует ошибочные результаты, необходимо остановить дальнейшее выполнение и сообщить об ошибке путем выдачи исключения. Основные шаги, чтобы взять
Обнаружьте ошибку. Это часто делается с некоторым типом условного оператора, такого как оператор if
или try/catch
, который проверяет вывод текущей операции.
Создайте объект MException
представлять ошибку. Добавьте идентификатор сообщения и сообщение об ошибке к объекту при вызове конструктора.
Если существуют другие исключения, которые, возможно, способствовали текущей ошибке, можно хранить объект MException
для каждого в поле cause
единственного MException
, который вы намереваетесь выдать. Используйте метод addCause
для этого.
Используйте throw
, или функция throwAsCaller
, чтобы иметь MATLAB выпускают исключение. На данном этапе MATLAB хранит информацию стека вызовов в поле stack
MException
, выходит из в настоящее время рабочей функции и возвращает управление или в клавиатуру или блок выгоды включения в функции вызова.
Этот пример иллюстрирует бросок исключения с помощью шагов, просто описанных:
Создайте массив и индекс в него с логическим массивом.
A = [13 42; 7 20]; idx = [1 0 1; 0 1 0];
Создайте исключение, которое предоставляет общую информацию об ошибке. Протестируйте индексный массив и добавьте исключения с более подробной информацией об источнике отказа.
% 1) Detect the error. try A(idx); catch % 2) Construct an MException object to represent the error. msgID = 'MYFUN:BadIndex'; msg = 'Unable to index into array.'; baseException = MException(msgID,msg); % 3) Store any information contributing to the error. try assert(islogical(idx),'MYFUN:notLogical',... 'Indexing array is not logical.') catch causeException baseException = addCause(baseException,causeException); end if any(size(idx) > size(A)) msgID = 'MYFUN:incorrectSize'; msg = 'Indexing array is too large.'; causeException2 = MException(msgID,msg); baseException = addCause(baseException,causeException2); end % 4) Throw the exception to stop execution and display an error % message. throw(baseException) end
Unable to index into array.
Caused by:
Indexing array is not logical.
Indexing array is too large.