aboutsummaryrefslogtreecommitdiff
path: root/src/main.c
diff options
context:
space:
mode:
authorMistivia <i@mistivia.com>2025-06-28 19:54:37 +0800
committerMistivia <i@mistivia.com>2025-06-28 19:54:37 +0800
commit9a4f460d6dd476767ea211c879f115e127ee2410 (patch)
tree8a7ad58e670065af74c261f51f5f21e9bfec3615 /src/main.c
parent0633c6c2797bc9182b2c1888385eac6cb6caed10 (diff)
exception & try-catch
Diffstat (limited to 'src/main.c')
-rw-r--r--src/main.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/main.c b/src/main.c
index 4ebcd03..334f761 100644
--- a/src/main.c
+++ b/src/main.c
@@ -17,6 +17,12 @@ int main(int argc, char **argv) {
fprintf(stderr, "Error: %s", Interp_ref(&interp, ret)->str);
mainret = -1; goto end;
}
+ if (Interp_ref(&interp, ret)->type == kExceptionSignal) {
+ const char *exception_str = lisp_to_string(&interp, Interp_ref(&interp, ret)->ret);
+ fprintf(stderr, "Uncatched exception: %s\n", exception_str);
+ free((void*)exception_str);
+ mainret = -1; goto end;
+ }
if (Interp_ref(&interp, ret)->type == kBreakSignal
|| Interp_ref(&interp, ret)->type == kContinueSignal
|| Interp_ref(&interp, ret)->type == kReturnSignal) {