| fun unsupportedEx() { | |
| if (true) throw UnsupportedOperationException() | |
| } | |
| fun runtimeEx() { | |
| if (true) throw RuntimeException() | |
| } | |
| fun test1() : String { | |
| var s = ""; | |
| try { | |
| try { | |
| s += "Try"; | |
| unsupportedEx() | |
| } catch (x : UnsupportedOperationException) { | |
| s += "Catch"; | |
| runtimeEx() | |
| } catch (e: RuntimeException) { | |
| s += "WrongCatch" | |
| } | |
| } catch (x : RuntimeException) { | |
| return s | |
| } | |
| return s + "Failed" | |
| } | |
| fun test1WithFinally() : String { | |
| var s = ""; | |
| try { | |
| try { | |
| s += "Try"; | |
| unsupportedEx() | |
| } catch (x : UnsupportedOperationException) { | |
| s += "Catch"; | |
| runtimeEx() | |
| } catch (e: RuntimeException) { | |
| s += "WrongCatch" | |
| } finally { | |
| s += "Finally" | |
| } | |
| } catch (x : RuntimeException) { | |
| return s | |
| } | |
| return s + "Failed" | |
| } | |
| fun test2() : String { | |
| var s = ""; | |
| try { | |
| try { | |
| s += "Try"; | |
| unsupportedEx() | |
| return s | |
| } catch (x : UnsupportedOperationException) { | |
| s += "Catch"; | |
| runtimeEx() | |
| return s | |
| } catch (e: RuntimeException) { | |
| s += "WrongCatch" | |
| } | |
| } catch (x : RuntimeException) { | |
| return s | |
| } | |
| return s + "Failed" | |
| } | |
| fun test2WithFinally() : String { | |
| var s = ""; | |
| try { | |
| try { | |
| s += "Try"; | |
| unsupportedEx() | |
| return s | |
| } catch (x : UnsupportedOperationException) { | |
| s += "Catch"; | |
| runtimeEx() | |
| return s | |
| } catch (e: RuntimeException) { | |
| s += "WrongCatch" | |
| } finally { | |
| s += "Finally" | |
| } | |
| } catch (x : RuntimeException) { | |
| return s | |
| } | |
| return s + "Failed" | |
| } | |
| fun box() : String { | |
| if (test1() != "TryCatch") return "fail1: ${test1()}" | |
| if (test1WithFinally() != "TryCatchFinally") return "fail2: ${test1WithFinally()}" | |
| if (test2() != "TryCatch") return "fail3: ${test2()}" | |
| if (test2WithFinally() != "TryCatchFinally") return "fail4: ${test2WithFinally()}" | |
| return "OK" | |
| } |