Составители:
99
Функция eval позволяет обработать ошибки, используя при
обращении к ней два аргумента eval('try', 'catch'). Здесь 'try' - строка,
содержащая исполняемое выражение, а 'catch’ - строка, содержащая
обращение к функции обработки ошибки или ошибок.
Если операция, определенная строкой 'try', выполняется пра-
вильно, то функция eval просто возвращает результат; если же гене-
рируется ошибка, то функция
обработки ошибок, указанная в строке
'catch', определяет ошибку, генерируемую строкой 'try', и выполняет
действия, которые позволяют избежать этой ошибки.
Функция eval('try', 'catch') особенно полезна в связке с функ-
цией lasterr. Функция lasterr возвращает строку, содержащую по-
следнее сообщение об ошибке. Применяя функцию lasterr внутри
функции обработки ошибок, можно перехватить и проанализировать
сообщение
об ошибке, сгенерированное выполняемой функцией.
Пример. Следующая М-функция catch(A, B) для обработки
ошибок использует встроенную функцию lasterr, чтобы проверить
сообщение об ошибке, которая возникает из-за несогласованности
размеров операндов. Если возникает ошибка, то программа уменьша-
ет размеры одной из матриц:
function C = catch(A, B)
l = lasterr;
j = findstr(l, 'Inner matrix dimensions');
if (~isempty(j))
[m, n] = size(A)
[p, q] = size(B)
if (n>p)
A(:, p+1:n) = []
else if (n < p)
B(n+1:p, :) = []
end
C = A*B;
else
C = 0;
end
Использование функции eval с
двумя аргументами, одним из
которых является функция catch, показано ниже:
clear
A = [1 2 3; 6 7 2; 0 1 5];
B = [9 5 6; 0 4 9];
eval('A*B','catch(A, B)')
m = 3
n = 3
p = 2
Функция eval позволяет обработать ошибки, используя при
обращении к ней два аргумента eval('try', 'catch'). Здесь 'try' - строка,
содержащая исполняемое выражение, а 'catch’ - строка, содержащая
обращение к функции обработки ошибки или ошибок.
Если операция, определенная строкой 'try', выполняется пра-
вильно, то функция eval просто возвращает результат; если же гене-
рируется ошибка, то функция обработки ошибок, указанная в строке
'catch', определяет ошибку, генерируемую строкой 'try', и выполняет
действия, которые позволяют избежать этой ошибки.
Функция eval('try', 'catch') особенно полезна в связке с функ-
цией lasterr. Функция lasterr возвращает строку, содержащую по-
следнее сообщение об ошибке. Применяя функцию lasterr внутри
функции обработки ошибок, можно перехватить и проанализировать
сообщение об ошибке, сгенерированное выполняемой функцией.
Пример. Следующая М-функция catch(A, B) для обработки
ошибок использует встроенную функцию lasterr, чтобы проверить
сообщение об ошибке, которая возникает из-за несогласованности
размеров операндов. Если возникает ошибка, то программа уменьша-
ет размеры одной из матриц:
function C = catch(A, B)
l = lasterr;
j = findstr(l, 'Inner matrix dimensions');
if (~isempty(j))
[m, n] = size(A)
[p, q] = size(B)
if (n>p)
A(:, p+1:n) = []
else if (n < p)
B(n+1:p, :) = []
end
C = A*B;
else
C = 0;
end
Использование функции eval с двумя аргументами, одним из
которых является функция catch, показано ниже:
clear
A = [1 2 3; 6 7 2; 0 1 5];
B = [9 5 6; 0 4 9];
eval('A*B','catch(A, B)')
m= 3
n= 3
p= 2
99
Страницы
- « первая
- ‹ предыдущая
- …
- 99
- 100
- 101
- 102
- 103
- …
- следующая ›
- последняя »
