Mat*_*use 13 matlab exception-handling exception
Matlab提供了两种机制来发出错误信号:error函数和语言的异常处理机制MException+ try/ catch/ throw.
看起来它们在很大程度上是等价的:error函数和MException函数具有非常相似的语法.通过a error()可以捕获引发catch的错误,而与错误相关的工具(如dbstop if error和lasterr)似乎也可以使用异常.
有没有理由更喜欢error('Foo:Bar', 'Some human-readable message about bar'),throw(MException('Foo:Bar', 'Some human-readable message'))反之亦然?
(它们都是内置函数,所以你不能只打开(例如)error.m来查看一个是否是另一个琐碎的包装器!)
这两种情况几乎是等价的(如果你发现错误或异常,唯一的区别是'cause'属性的单元格分配略有不同).该error函数使生成和抛出异常变得容易.关于一个好处MException是,你可以创建一个MException对象,并通过它周围的一个变量,改变其性质(例如,增加的原因),并throw或rethrow在需要时.大多数时候你只想使用它error.
MathWorks的这个页面包含许多关于MException类的细节.