Matlab中的异常与错误

时间:2013-07-26 16:48:17

标签: matlab exception exception-handling

Matlab提供了两种机制来表明出现了问题:error函数和语言的异常处理机制MException + try / catch / {{1 }}。

看起来它们大致相同:throw函数和error函数具有非常相似的语法。通过MException引发的错误可以由error()捕获,而与错误相关的工具(如catchdbstop if error)似乎也可以使用异常。

是否有理由更喜欢lasterrerror('Foo:Bar', 'Some human-readable message about bar'),反之亦然?

(它们都是内置函数,所以你不能只打开(例如)error.m来查看一个是否是另一个是一个微不足道的包装器!)

2 个答案:

答案 0 :(得分:7)

这两种情况实际上是等价的(如果你发现错误或异常,唯一的区别是'cause'属性的单元格分配略有不同)。 error函数只是简单地生成和抛出异常。关于MException的一个好处是你可以创建一个MException对象并将其作为变量传递,更改其属性(例如adding a cause),throw或{{1} } 需要的时候。大多数情况下,您只想使用rethrow

来自MathWorks的

This page包含有关MException类的大量详细信息。

答案 1 :(得分:1)

this thread上有关MATLAB Answers的更多有用信息。

答案是错误更老,而且MException更新,更灵活。已修改错误以创建MException。

错误被认为更容易使用,并且目标是来自科学和工程界的MATLAB最终用户。 MException更高级(ME对象可以被修改和重新抛出),并且针对软件开发社区。