2012-02-18 119 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