Limbo supports the throwing, catching, and custom definition of exceptions.
The example in this section is a derivative of the exceptions summary in the Limbo Addendum.
This section calculates numbers within the fibonacci sequence to a given interval. In this case, the first 5 numbers are calculated within the sequence.
Note the call to the raise
keyword after the fibonacci calculations have completed, but before the program exits.
The fibonacci()
function attempts to perform a fib()
call and, if an exception e
is thrown, attempts to handle the exception in a manner depending on the exception type.
Note that the attempted operation is wrapped in a { ... }
block.
The raises
clause allows for warnings to be generated for un-caught exception potential within a program. Note that these exception types can be user-defined.
The FIB
exception type is defined at: exceptions.b:12
; limbo exceptions.b
; exceptions
F(0) = 1
F(1) = 1
F(2) = 2
F(3) = 3
F(4) = 5
sh: 798 "Exceptions":going down!
;
- Try removing the raise for "going down!".
- Remove the
i < 5
portion of the for loop, how many values are printed and why? - Try removing the exception-catching block from around calls to
fib()
, do you get warnings? - Try changing the raise type within
fib()
, doesfibonacci()
handle the exceptione
differently?