Main Content

使用 try/catch 处理错误

在您的程序遇到错误后,可以使用 try/catch 语句执行代码。try/catch 语句在以下情况下很有用:

  • 希望以另一种方式来完成程序以避免错误

  • 需要清除不必要的、意外的错误结果

  • 有许多有问题的输入参数或命令

try/catch 语句安排到代码块中,类似于以下伪代码:

try
  try block...
catch
  catch block...
end
如果 try block 中出现错误,MATLAB® 会跳过 try 块中其余的任何命令并执行 catch block 中的命令。如果 try block 中没有出现任何错误,MATLAB 会跳过整个 catch block

例如,try/catch 语句可避免引发错误。以 combinations 函数为例,该函数返回 n 个元素中 k 个元素的组合数。

function com = combinations(n,k)
    com = factorial(n)/(factorial(k)*factorial(n-k));
end

MATLAB 会在 k > n 时引发错误。您不能构造一个元素数 k 多于拥有的元素数 n 的集合。使用 try/catch 语句,您可以避免错误并执行此函数,而不管输入顺序如何:

function com = robust_combine(n,k)
    try
       com = factorial(n)/(factorial(k)*factorial(n-k));
    catch
       com = factorial(k)/(factorial(n)*factorial(k-n));
    end
end
robust_combine 将任何顺序的整数视为有效输入:
C1 = robust_combine(8,4)
C2 = robust_combine(4,8)
C1 =

    70


C2 =

    70

或者,如果某变量在您的 catch 语句之后,则您可以捕获有关错误的更多信息:

catch MExc
MExc 是一个 MException 类对象,其中包含有关所引发的错误的更多信息。要详细了解如何访问 MException 对象中的信息,请参阅 MATLAB 应用程序中的异常处理

另请参阅

| |