抛出注释无法识别

时间:2015-09-08 05:47:13

标签: scala playframework annotations

我试图表明方法可以抛出异常。我使用throws注释,但编译器向我显示警告:

[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。

1 个答案:

答案 0 :(得分: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 = {
   ...
}