Matlab提供了两种机制来表明出现了问题:error
函数和语言的异常处理机制MException
+ try
/ catch
/ {{1 }}。
看起来它们大致相同:throw
函数和error
函数具有非常相似的语法。通过MException
引发的错误可以由error()
捕获,而与错误相关的工具(如catch
和dbstop if error
)似乎也可以使用异常。
是否有理由更喜欢lasterr
到error('Foo:Bar', 'Some human-readable message about bar')
,反之亦然?
(它们都是内置函数,所以你不能只打开(例如)error.m来查看一个是否是另一个是一个微不足道的包装器!)
答案 0 :(得分:7)
这两种情况实际上是等价的(如果你发现错误或异常,唯一的区别是'cause'
属性的单元格分配略有不同)。 error
函数只是简单地生成和抛出异常。关于MException
的一个好处是你可以创建一个MException对象并将其作为变量传递,更改其属性(例如adding a cause),throw
或{{1} } 需要的时候。大多数情况下,您只想使用rethrow
。
This page包含有关MException类的大量详细信息。
答案 1 :(得分:1)
this thread上有关MATLAB Answers的更多有用信息。
答案是错误更老,而且MException更新,更灵活。已修改错误以创建MException。
错误被认为更容易使用,并且目标是来自科学和工程界的MATLAB最终用户。 MException更高级(ME对象可以被修改和重新抛出),并且针对软件开发社区。 p>