The _error function was returning an empty string which meant that in
the try*/catch* implementation, the lack of result was preventing
foreach from being used as a "let" form and because of that it was
skipping the catch* handling path.
_visualize_memory = $(foreach var,$(sort $(foreach vv,$(filter $(__obj_magic)_%,$(.VARIABLES)),$(call __var_name,$(vv)))),$(call __var_print,$(__obj_magic)_$(var)))
-# Errors/Exceptions
-__ERROR :=
-_error = $(eval __ERROR := $(call _string,$(1)))
-
-
# Constant atomic values
__undefined = $(__obj_magic)_undf_0
__nil = $(__obj_magic)__nil_0
__false = $(__obj_magic)_fals_0
+# Errors/Exceptions
+__ERROR :=
+_error = $(eval __ERROR := $(call _string,$(1)))$(__nil)
+
+
# General functions
# Return the type of the object (or "make" if it's not a object
(try* 123 (catch* e 456))
;=>123
+(try* abc (catch* exc (prn "exc is:" exc)))
+;/"exc is:" "'abc' not found"
+;=>nil
+
(try* (abc 1 2) (catch* exc (prn "exc is:" exc)))
;/"exc is:" "'abc' not found"
;=>nil