23.4. Adnotacja throws

Adnotacja throws służy do dodawania do definicji metod informacji o wyjątkach, które mogą być wyrzucane przez te metody. Ta adnotacja ma swoją analogię w klauzuli throws z języka Java. Poniższy przykład przedstawia metodę oznaczoną dwoma adnotacjami throws.

Plik Throws1.scala:
class Throws1 {
  @throws(classOf[Exception])
  @throws(classOf[IllegalArgumentException])
  def greet(greeting: String, n: Int) {
    if (n < 0) throw new IllegalArgumentException(
        "The number of repetitions must be positive.")
    if (n > 5) throw new Exception("Too many repetitions requested: "+n)
    for (j <- 1 to n) println(greeting)
  }
}

Korzystając z mechanizmów refleksji języka Java można sprawdzić, że informacja o wyjątkach rzeczywiście została zapisana w klasie Throws1.

scala> val Some(m) = (new Throws1).getClass.getMethods.find(_.getName=="greet")
m: java.lang.reflect.Method = public void Throws1.greet(java.lang.String,int) throws java.lang.Exception,java.lang.IllegalArgumentException

scala> println(m.getExceptionTypes.mkString("\n"))
class java.lang.Exception
class java.lang.IllegalArgumentException

Język programowania Scala Wydanie 2. Copyright © Grzegorz Balcerek 2016

Licencja Creative Commons

Ten utwór jest dostępny na licencji Creative Commons Uznanie autorstwa-Na tych samych warunkach 4.0 Międzynarodowe.

Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners.