17.6. Wyrażenie try z klauzulami catch i finally

Wyrażenie try może zawierać jednocześnie klauzule catch i finally. W takim przypadku klauzula catch musi znaleźć się przed klauzulą finally. Wyrażenie try mające następującą postać:

try b catch e1 finally e2

odpowiada następującym dwóm zagnieżdżonym wyrażeniom try

try {
  try b catch e1
} finally e2

Na przykład następujące dwa wyrażenia są równoważne.

scala> try throw new Exception("1") catch {
     |   case ex:Exception => println("ex: "+ex); throw ex
     | } finally println("finally")
ex: java.lang.Exception: 1
finally
java.lang.Exception: 1
  at .liftedTree1$1(<console>:11)
  ... 37 elided

scala> try {
     |   try throw new Exception("1") catch {
     |     case ex:Exception => println("ex: "+ex); throw ex
     |   }
     | } finally println("finally")
ex: java.lang.Exception: 1
finally
java.lang.Exception: 1
  at .liftedTree1$1(<console>:12)
  ... 41 elided

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.