rhai/doc/src/language/throw.md
2020-06-20 12:06:17 +08:00

893 B

Throw Exception on Error

{{#include ../links.md}}

All of [Engine]'s evaluation/consuming methods return Result<T, Box<rhai::EvalAltResult>> with EvalAltResult holding error information.

To deliberately return an error during an evaluation, use the throw keyword.

if some_bad_condition_has_happened {
    throw error;    // 'throw' takes a string as the exception text
}

throw;              // defaults to empty exception text: ""

Exceptions thrown via throw in the script can be captured by matching Err(Box<EvalAltResult::ErrorRuntime( reason , position )>) with the exception text captured by the first parameter.

let result = engine.eval::<i64>(r#"
    let x = 42;

    if x > 0 {
        throw x + " is too large!";
    }
"#);

println!(result);   // prints "Runtime error: 42 is too large! (line 5, position 15)"