matlab 报错语句,MATLAB错误控制语句try-catch

本文概述

MATLAB定义了一些用于控制错误的函数。 try-catch语句是一个错误控制功能, 下面将对其进行说明。

try-catch语句

try-catch语句提供错误处理控制。 try-catch语句的一般形式是

句法:

try

Statements

catch exception

Statements

end

try和catch之间的语句首先执行。如果在try和catch之间执行语句时未出现错误, 则MATLAB会在end关键字之后进一步执行语句/代码。如果在try和catch之间执行语句期间发生错误, 则MATLAB将在catch和end之间执行语句。 try-catch语句可以在以下示例的帮助下进行解释。

例:

a = ones(4);

b = zeros(3);

try

c = [a;b];

catch ME

disp(ME)

end

输出

MException with properties:

identifier: 'MATLAB:catenate:dimensionMismatch'

message: 'Dimensions of arrays being concatenated are not consistent.'

cause: {0×1 cell}

stack: [3×1 struct]

Correction: []

matlab-error-control-statement-try-catch.png

以下是在MATLAB中使用try / catch语句的要点:

程序执行的控制首先进入try块并执行每个语句。

如果在执行过程中发生任何错误, 则控件将立即传递到catch块, 而try块的任何其他语句均未执行。

如果try块内没有发生错误, 则控件不会进入catch块。然后控件到达try / catch块的end关键字之后的语句。

每当try块中发生任何错误或异常时, MATLAB都会构造MException类的实例, 并在catch语句中返回该对象。

可以使用变量ME访问MException类对象。

MException类对象具有五个属性标识, 消息, 堆栈, 原因和更正。这些属性描述有关发生的异常的详细信息。

我们不能使用多个catch块, 只能在try块中使用一个catch块。

如果需要, 我们可以使用嵌套的try / catch块。

显示MException类对象属性的示例:

a = ones(4);

b = zeros(3);

try

c = [a;b];

catch ME

% strcmp string compare function, to check the same string in ME identifier

if (strcmp(ME.identifier, 'MATLAB:catenate:dimensionMismatch'))

% if it is true then change the message property

msg = ['dimension mismatch occured: First argument has ', ...

num2str(size(a, 2)), ' columns, while second argument has ', ...

num2str(size(b, 2)), ' columns.'];

causeException = MException('MATLAB:mycode:dimensions', msg)

ME = addCause(ME, causeException);

end

end

输出

causeException =

MException with properties:

identifier: 'MATLAB:mycode:dimensions'

message: 'dimension mismatch occured: First argument has 4 columns, while second argument has 3 columns.'

cause: {}

stack: [0×1 struct]

Correction: []

程序终止

程序终止控制允许在正常终止点之前的某个时刻退出我们的程序。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值