Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Glava_2a70_2014.doc
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
4.6 Mб
Скачать

2.30.4. Прочие операторы.

Помимо рассмотренных, в системе MATLAB, разумеется, предусмотрены также прочие специальные операторы, позволяющие, в частности, избежать ошибок в программах. В частности, рассматриваемая далее управляющая конструкция try...catch позволяет распознать различные ситуации, которые могут привести к сбою в программе (какой бы идеальной последняя не была, могут существовать условия, при которых возможно возникновение ошибок), и если они случаются, выполнить необходимые действия для предотвращения проблем (т.е. корректно выйти из нежелательных (исключительных, нежелательных) ситуаций).

Если в программе имеются команды, выполнение которых может привести к ошибочным результатам, эти команды следует переместить в конструкцию управления try...catch, называемую также «перехватчиком исключительных ситуаций» (или «обработчиком ошибочных ситуаций»).

Управляющая конструкция try...catch имеет следующий синтаксис:

try

Инструкции_1

catch

Инструкции_2

end

Представленная конструкция работает следующим образом. При обычных условиях выполняется только блок команд Инструкции_1, однако если при попытке выполнения этого блока возникает какая-либо исключительная ситуация (например, программа не может отыскать файл, к которому задано обращение, либо невозможно выполнение арифметической операции с заданными значениями, либо возникает нехватка памяти компьютера), управление переходит к группе команд Инструкции_2 (т.е. в блоке команд Инструкции_2 обычно задаются команды, которые необходимо выполнить при возникновении ошибки в блоке Инструкции_1 (это может быть вывод на экран предупреждающего соотношения, либо команды, позволяющие обойти данную ошибку и перейти к выполнению дальнейших действий в программе).

Приведенный ниже пример иллюстрирует использование конструкции try...catch в простейшей файл-функции, выполняющей перемножение двух матриц:

function MatMult(A,B)

try

X=A*B

catch

disp('Перемножение заданных матриц A и B невозможно')

end

Поясним, что в соответствии с правилами матричного исчисления, операция перемножения матриц является невозможной, если число столбцов первого сомножителя не равно числу строк второго сомножителя, и если в качестве аргументов приведенной файл-функции задать такие «несогласованные» матрицы, то возникнет ошибочная ситуация и управление будет передано блоку catch, в результате чего на экране монитора отобразится сообщение, заданное командой disp, как это показано ниже.

>> A=[6 5 4; 3 2 1];

>> B=[1 2 3; 4 5 6; 2 3 4];

>> MatMult(A,B)

X =

34 49 64

13 19 25

>> MatMult(B,A)

Перемножение заданных матриц A и B невозможно

Заметим, что на практике ситуации, в которых целесообразно использовать конструкцию try...catch возникают достаточно редко, однако ее применение, тем не менее, целесообразно с позиций повышения надежности программы (в худшем случае такая конструкция просто не сработает, не принеся никакого дополнительного вреда), особенно при наличии в ней потенциально опасных мест. Вместе с тем, попасть в catch-отсек, как правило, весьма не просто – система MATLAB в большинстве своих функций и операций обрабатывает ошибочные ситуации весьма надежно, так что необходимость в дополнительных обработчиках отсутствует.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]