fix #18 basic exceptions handling

This commit is contained in:
sergeych committed 2025-06-12 19:17:35 +04:00
1 parent 95aae0b231
commit 6c71f0a2e6
11 files changed
+280 -35

No files matched your search

+28
View File
@@ -753,6 +753,34 @@ We can use labels too:
assert( search(["hello", "world"], 'z') == null)
>>> void
# Exception handling
Very much like in Kotlin. Try block returns its body block result, if no exception was cauht, or the result from the catch block that caught the exception:
var error = "not caught"
var finallyCaught = false
val result = try {
throw IllegalArgumentException()
"invalid"
}
catch(nd: SymbolNotDefinedException) {
error = "bad catch"
}
catch(x: IllegalArgumentException) {
error = "no error"
"OK"
}
finally {
// finally does not affect returned value
"too bad"
}
assertEquals( "no error", error)
assertEquals( "OK", result)
>>> void
It is possible to catch several exceptions in the same block (TBD)
# Self-assignments in expression
There are auto-increments and auto-decrements: