2012-02-18 323 views
4

我写了一些代码,现在我正在做一些功能,但我还没有写出它们。我只是做一个空的函数,它什么都不做。我想要做的是抛出一个异常,如果函数运行,以防止我忘记写函数。如何在Matlab中抛出异常?

回答

6

最简单的方法是:

error('Some useful error message.') 

Matlab是高兴的是你的IDENTIFER分配给你的错误信息,如:

error('toolsetname:other_identifying_information','Some useful error message here.') 

识别信息报道的一些错误处理例程,例如,在每个上述调用之后,尝试运行lasterror

2
+0

谢谢,我不知道我是怎么错过的。 – 2012-02-18 16:00:14

+3

网页不是非常清晰。如果您在答案中添加示例代码,那将会非常棒。 – Oli 2012-02-18 16:33:25

+0

公平起见,最简单的方法是使用@Pursuit建议的'error()'。 – 2012-02-18 16:54:24

3

您还可以使用:

throw(MException('Id:id','message')); 

有一个很好的功能MException,它可以被用来作为sprintf

throw(MException('Foo:FatalError',... 
    'First argument of Foo is %s, but it must be double',class(varargin{1}))); 

正如@edric正确评价,这sprintf功能可以一把双刃剑。如果你使用了一些转义字符,它可能表现得不像你想要的那样。

throw(MException('Foo:FatalError',... 
    'I just want to add a \t, no tab!')); 
+0

请记住,MException构造函数的第二个参数是*格式说明符*,而不是字符串文字。 (我和其他人一样,在过去有过这样的错误)。 – Edric 2012-02-20 08:25:01

+0

@Edric,你的意思是sprintf的功能? – 2012-02-20 08:57:00

+0

是的,这是正确的 - 我看到人们做了像MException('some:id',['Problem in:'fname])和fname包含“\ t”(或更糟...)的问题 - 然后变成一个制表符。 – Edric 2012-02-20 11:25:55