📜  MATLAB错误控制语句尝试-catch

📅  最后修改于: 2021-01-07 02:19:58             🧑  作者: Mango

MATLAB错误控制陈述式尝试,赶上

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

试试-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中使用try / catch语句的要点:

  • 程序执行的控制首先进入try块并执行每个语句。
  • 如果在执行过程中发生任何错误,则控件将立即传递到catch块,而try块的任何其他语句均未执行。
  • 如果try块内没有发生错误,则控件不会进入catch块。然后控件到达try / catch块的end关键字之后的语句。
  • 每当try块中发生任何错误或异常时,MATLAB都会构造MException类的实例,并在catch语句中返回该对象。
  • 可以使用变量ME访问MException类对象。
  • MException类对象具有五个属性-标识符,消息,堆栈,原因Correction 。这些属性描述有关发生的异常的详细信息。
  • 我们不能使用多个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: []

程序终止

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