尝试抓住

执行语句和捕获产生的错误

句法

尝试声明抓住例外声明结束

描述

尝试声明,抓声明结束执行该语句尝试块和捕获产生的误差抓住块。这种方法允许你覆盖默认的错误行为一组程序语句。如果在任何声明尝试块产生一个错误,则程序控制立即转到抓住块,其中包含您的错误处理语句。

例外是一个MException对象,它允许您识别错误。该抓住块中的当前异常对象分配给在可变例外

尝试抓住块可以包含嵌套试着抓声明。

例子

全部收缩

创建两个矩阵,你不能垂直串联。

A =兰特(3);B =酮(5);C = [A;B];
使用vertcat被级联矩阵的尺寸误差并不一致。

试着抓以显示有关尺寸的信息。

尝试C = [A;B];抓住如果(的strcmp(ME.identifier,'MATLAB:链状:dimensionMismatch'))MSG = [“尺寸不符的情况发生了:第一个参数具有”...num2str(大小(A,2)),“列而第二个具有”...num2str(大小(B,2)),' 列。']。的causeException = MException('MATLAB:mycode的:尺寸',MSG);ME = addCause(ME,的causeException);结束重新抛出(ME)结束
使用vertcat被级联矩阵的尺寸误差并不一致。产生的原因:尺寸不符的情况发生了:第一个参数有3列,而第二个有5列。

如果矩阵尺寸不同意,MATLAB®显示关于不匹配的更多信息。任何其他错误出现像往常一样。

抓住通过调用不存在的功能产生任何异常,notaFunction。如果有异常,发出警告,并指定输出值0。

尝试一个= notaFunction(5,6);抓住警告(“问题使用的功能。分配0值”);一个= 0;结束
警告:使用功能的问题。分配值0。

就其本身而言,调用notaFunction导致错误。如果您使用尝试抓住,此代码捕获任何异常和重新打包它作为一个警告,允许MATLAB继续执行后续的命令。

试着抓处理不同类型的以不同的方式错误。

  • 如果函数notaFunction未定义,发出警告而不是错误,并指定输出的值为NaN

  • 如果notaFunction.m存在的,但它是一个脚本,而不是一个功能,发出警告而不是错误,运行脚本,并指定输出的值0

  • 如果MATLAB引发错误的任何其他原因,重新抛出异常。

尝试一个= notaFunction(5,6);抓住开关ME.identifier案件'MATLAB:UndefinedFunction'警告(“功能是不确定的。分配值为NaN“。);A = NaN的;案件'MATLAB:scriptNotAFunction'警告([“试图执行脚本功能。“...“运行脚本,并分配输出值0。”]);notaFunction;一个= 0;除此以外重新抛出(ME)结束结束
警告:功能是不明确的。分配值为NaN。

提示

  • 你不能使用多个抓住内的块尝试块,但你可以嵌套完成试着抓块。

  • 其它语言不同,MATLAB不允许使用的最后内块试着抓声明。

R2006a前推出