Main Content

MATLAB 应用程序中的异常处理

概述

无论您如何仔细设计和测试您编写的程序,当在不同条件下执行这些程序时,它们并不能始终如期地顺利运行。最好在程序中包含错误检查机制以确保程序在所有条件下都能可靠地运行。

在 MATLAB® 软件中,您可以决定您的程序如何针对不同类型的错误作出响应。您可能需要提示用户输入更多的内容,显示扩充的错误或警告信息,或者使用默认值重复某项计算。MATLAB 中的错误处理功能有助于您的程序检查特定错误条件,以及根据具体情况执行相应代码。

当 MATLAB 在运行的命令或程序中检测到严重缺陷时,它会收集有关在出现错误时所发生情况的信息,显示消息以帮助用户了解出现的故障,并终止所运行的命令或程序。这称为引发异常。当您在 MATLAB 命令提示符下输入命令或执行您的程序代码时,可能会遇到异常。

在命令行处遇到异常

如果您在 MATLAB 提示符下操作遇到异常,可以按如下所述使用几个选项来处理该异常。

根据错误消息确定故障

评估 MATLAB 显示的错误消息。多数错误消息都至少尝试解释程序故障的直接原因。通常有足够的信息来确定问题的根源以及您需要采取何种操作来修复相应的问题。

查看出错的代码

如果出现错误的函数是以 MATLAB 程序文件的形式实现的,则错误消息应包括一个类似如下的行:

surf

Error using surf (line 49)
Not enough input arguments.

该文本包括引发错误的函数的名称(本例中为 surf),并显示该函数的程序文件中出错的行号。点击行号;MATLAB 会打开该文件并将光标置于该文件中出现错误的位置。您可以通过检查这一行及其前面的代码来确定错误原因。

在调试器中逐行执行代码

您可以使用 MATLAB 调试器逐行执行出错的代码。点击带下划线的错误文本,即可在 MATLAB 编辑器中打开相应的文件并转到错误所在位置或附近。接下来,点击该行开头处的连字符以便在该位置设置断点。当您重新运行您的程序时,MATLAB 会在断点处暂停执行并以便允许逐行执行程序代码。命令 dbstop on error 也有助于查找出错位置。

有关详细信息,请参阅调试 MATLAB 代码文件部分。

在您的程序代码中遇到异常

当您在程序文件中编写自己的程序时,您可以捕获异常并尝试处理或解决异常,而不是让您的程序终止。当您捕获异常时,您会中断正常终止过程并进入应对故障情形的代码节。该代码节称为 catch 块

您可能需要在 catch 块中执行的一些操作有:

  • 检查已捕获的、有关错误的信息。

  • 收集更多信息以报告给用户。

  • 尝试以其他某种方式完成手头任务。

  • 清除错误的任何不需要的意外结果。

当您到达 catch 块的末尾时,您可以继续执行程序(如果可以)或终止程序。

使用 MException 对象在您的程序中访问有关异常的信息。有关详细信息,请参阅对异常作出响应

产生新的异常

当您的程序代码检测到某种条件可能致使程序失败或者产生无法接受的结果时,会引发异常。在此过程中

  • 将保存有关出现的问题以及在发生错误时正执行的代码的信息。

  • 将收集有关错误的任何其他相关信息。

  • 将指示 MATLAB 引发异常。

使用 MException 对象捕获有关错误的信息。有关详细信息,请参阅引发异常