2015-09-08 92 views
0

我想表明一個方法可以拋出異常。我用的是拋出註解,但是編譯器顯示我一個警告:拋出註釋不被識別

[warn] /root/playit/app/entities/game/GameRepository.scala:67: Tag '@throws(classOf[DatabaseException])' is not recognised 
[warn] /** 
[warn] ^

的代碼如下:

/** 
* @throws(classOf[DatabaseException]) 
*/ 
def insert(game: Game): Long = { 
    ... 
} 

我不知道我做錯了。 IDE說「缺少標籤參數」。我正在使用Play 2.4和IntelliJ IDE。

回答

3

您將Scala @throws註解與Scaladoc @throws標記混淆。

註釋直接在方法上,實際上編譯成字節碼(如Java中的throws關鍵字),Scaladoc轉換爲文檔(例如,在哪種情況下拋出異常)。

/** 
* @throws DatabaseException Banana banana. 
*/ 
@throws(classOf[DatabaseException]) 
def insert(game: Game): Long = { 
    ... 
} 

編輯補充:

這句法結合了,並期待最好對我說:

@throws[DatabaseException]("Banana banana.") 
def insert(game: Game): Long = { 
    ... 
} 
+0

謝謝!我不知道爲什麼我沒有想到這一點。我已經看到了兩種寫法:@throws(classOf([Exception])和@throws [Exception](「reason」)。我可以同時使用嗎? – Miguel

+0

是的,他們都應該工作。 。 – Henning