diff options
Diffstat (limited to 'neb/std')
| -rw-r--r-- | neb/std/core.py | 10 | 
1 files changed, 10 insertions, 0 deletions
| diff --git a/neb/std/core.py b/neb/std/core.py index cf0686b..9e2e743 100644 --- a/neb/std/core.py +++ b/neb/std/core.py @@ -274,3 +274,13 @@ def interpretBench(symbol, args, env, ns):      return ret  CORE.register("bench", NebSyntax("bench", interpretBench, [Arg("command", TypeEnum.ANY)], return_type=Type(":any"))) + +def interpretTry(symbol, args, env, ns): +    try: +        return evaluate(args[0], env, ns) +    except NebPanic as e: +        new_env = Environment(env) +        new_env.register("_panic_", String(f"{e}")) +        return evaluate(args[1], new_env, ns) + +CORE.register("try", NebSyntax("try", interpretTry, [Arg("expr", TypeEnum.ANY), Arg("except", TypeEnum.ANY)], return_type=Type(":any"))) | 
