Matlab提供了两种机制来发出错误信号:error函数和语言的异常处理机制MException +MException。
看起来它们在很大程度上是等价的:error函数和MException函数具有非常相似的语法。通过error()引发的错误可以被catch捕获,而与错误相关的工具(如dbstop if error和lasterr)似乎也适用于异常。
是否有理由选择error('Foo:Bar', 'Some human-readable message about bar')而不是throw(MException('Foo:Bar', 'Some human-readable message')),反之亦然?
(它们都是内置的,所以你不能就这样打开(例如)M看看其中一个是否是另一个的琐碎包装!)
发布于 2013-07-26 17:26:19
这两种情况实际上是等价的(如果捕捉到错误或异常,唯一的区别是'cause'属性的单元格的分配略有不同)。error函数只会使生成和抛出异常变得更容易。MException的一个优点是,您可以创建一个MException对象,并将其作为变量传递,更改其属性(例如,增加一个原因),并在需要时更改throw或rethrow。然而,大多数情况下,您只想使用error。
来自此页的MathWorks包含了许多关于MException类的详细信息。
发布于 2016-09-26 11:32:50
关于这条线在MATLAB答案上还有一些更有用的信息。
答案是,错误要老得多,MException更新、更灵活。错误已被修改以创建MException。
错误被认为更容易使用,并且针对来自科学和工程界的MATLAB终端用户。MException更高级(因为ME对象可以修改和重新抛出),并且是针对软件开发社区的。
https://stackoverflow.com/questions/17886796
复制相似问题