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