Matlab предоставляет два механизма сигнализации о том, что что-то пошло не так: функция error
и механизмы обработки исключений языка MException
+ try
/catch
/throw
.
Похоже, что они в значительной степени эквивалентны: функция 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'))
или наоборот?
(Они оба встроены, поэтому вы не можете просто открыть (например,) error.m, чтобы убедиться, что это тривиальная оболочка вокруг другого!)