MATLAB中的异常处理

在编写程序的过程中难免会出现错误,使得程序无法继续运行或者结果不正确。MATLAB中提供了多种调试和错误处理手段。程序调试技巧在很大程度上是经验性的,需要不断积累。[大谦MATLAB,dqmatlab点com]

用try-catch语句检查错误

try...catch语句可以进行错误捕获,它把有可能引起异常的语句放在try控制块中,这样当try控制块中语句引起异常时,catch控制块就可以捕获它,并针对不同的错误类型,进行不同的处理。try...catch命令的语法格式为:

code.matlab
try
   执行语句…,
catch
   执行语句…,
end

现有计算两个矩阵相乘的函数,在无法正确计算结果时将抛出错误。

code.matlab
function matrixMultiply(A, B)
try
   X=A * B
catch
   disp '** 计算A * B时出错。'
end

将函数保存到M文件catcherr.m。在上面的try-catch语句中,try块中的语句不能正常执行时,catch块抛出出错信息。在命令窗口输入下面的语句,首先定义两个矩阵A和B,然后调用matrixMultiply函数计算它们的乘积。由于A和B不满足矩阵相乘的条件,即A的列数不等于B的行数,所以结果出错。

code.matlab
>> A=[1  2  3; 6  7  2; 0  1  5];
>> B=[9  5  6; 0  4  9];
>> matrixMultiply(A, B)
**计算A * B时出错。

错误和警告信息

使用MATLAB的error和warning函数可以报告错误和警告信息并延迟程序的运行。

下面的代码判断n的大小,如果n小于1,则给出出错信息“n必须大于或等于1”。在命令窗口输入:

code.matlab
>> n=0;
>> if n < 1
    error('n必须大于或等于1。')
end

返回结果:

code.matlab
n必须大于或等于1。

同样,下面用warning函数给出警告信息。

code.matlab
warning('输入内容必须是字符串')

警告输入内容必须是字符串。

用“编辑器”工具栏进行调试

使用MATLAB“编辑器”工具栏中的按钮选项,可以很方便地进行程序调试。具体的高度方式大体可以分为3种,即断点调试、块执行以及逐节调试等。

1.断点调试

在进行断点调试时,程序运行到断点处就会停下来,这样有利于很快找到错误出现的位置。此种调试方式需要先设置断点。要设置断点,在编辑器中,在需要设置断点的代码前单击鼠标左键,显示红色圆点,即为断点;再次单击,取消断点设置。

2.块执行

在编辑器中选择要执行的内容,单击鼠标右键,在弹出的快捷菜单中单击“执行所选内容”或“执行所选节”命令实现块执行。

3.逐节调试

在“编辑器”工具栏中单击“运行并前进”按钮,会执行当前节程序并前进到下一节。