| var log = "" |
| |
| fun foo() { |
| try { |
| log += "1" |
| mightThrow() |
| log += "2" |
| } catch (e: Throwable) { |
| log += "3" |
| "OK" |
| } finally { |
| log += "4" |
| "FINALLY" |
| } |
| |
| val t = try { |
| log += "5" |
| mightThrow2() |
| log += "6" |
| } catch (e: Throwable) { |
| log += "7" |
| "OK2" |
| } finally { |
| log += "8" |
| "FINALLY2" |
| } |
| } |
| |
| var throw1 = false |
| var throw2 = false |
| |
| fun mightThrow() { |
| if (throw1) throw Exception() |
| } |
| |
| fun mightThrow2() { |
| if (throw2) throw Exception() |
| } |
| |
| fun box(): String { |
| log += "a" |
| foo() |
| throw2 = true |
| log += " b" |
| foo() |
| throw1 = true |
| log += " c" |
| foo() |
| if (log != "a124568 b124578 c134578") |
| return "Failed: $log" |
| return "OK" |
| } |