matlab的代码是按行执行的,如果碰到错误行,则程序中断。try..catch可以使得可能出错代码不影响后面代码的继续执行,也可以检查,排查,解决程序的一些错误
(1)try end
即使try中间运算会出错,依然运算end之后的的东西,相当于try语句中的东西即使出错不会进行预算
>> m = rand(3,4);
n = magic(5);
n = magic(5);
try
a = m*n;
disp(a)
end
disp(m)
disp(n)
a = m*n;
disp(a)
end
disp(m)
disp(n)
0.6787 0.3922 0.7060 0.0462
0.7577 0.6555 0.0318 0.0971
0.7431 0.1712 0.2769 0.8235
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
下面是正确代码 和 错误代码 看他们在try语句中的执行结果
>> m = rand(3,4);
k = rand(4,5);
n = magic(5);
k = rand(4,5);
n = magic(5);
>>
% 下面是一段正确的代码
try
b = m * k;
disp (b)
disp('successed')
end
0.9213 0.5138 0.3379 0.3830 0.5733
0.7547 0.5138 0.3532 0.5112 0.4859
1.2634 1.1765 1.0663 1.6342 0.9033
% 下面是一段正确的代码
try
b = m * k;
disp (b)
disp('successed')
end
0.9213 0.5138 0.3379 0.3830 0.5733
0.7547 0.5138 0.3532 0.5112 0.4859
1.2634 1.1765 1.0663 1.6342 0.9033
successed
>>
% 下面是一段不符合矩阵乘法运算的代码
try
a = m*n;
disp(a)
disp('successed')
end
>>
是的因为没有定义错误代码end之后的输出,所以try失败也没有提醒
(2)try catch end
当程序碰到try里面的东西有错误的时候,可以直接执行catch里面的东西,类似于 if else 语句
可以用于检查程序的错误
>> m = rand(3,4);
k = rand(4,5);
n = magic(5);
k = rand(4,5);
n = magic(5);
try
a = m*n;
disp(a)
disp('first one is correct')
a = m*n;
disp(a)
disp('first one is correct')
catch
b = m * k;
disp (b)
disp('second one is correct')
end
b = m * k;
disp (b)
disp('second one is correct')
end
1.2346 1.2908 0.8445 1.4148 1.6994
1.0708 1.0095 0.7283 1.1450 1.4246
0.9698 0.8756 0.5689 0.8565 1.3259
second one is correct