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" }