There are two statements in Magma for the reporting of errors. The syntax of the simple error-statement is:
error EXPRESSION, ..., EXPRESSION;
and the syntax of the error-if statement is:
error if PREDICATE, EXPRESSION, ..., EXPRESSION;
These statements may be used inside the statement body of a function or procedure expression. They cannot be used within a func< > or proc< > constructor.
If Magma encounters a simple error-statement when executing a function call or procedure call, or if it encounters an error-if statement where the PREDICATE evaluates to true, then it prints the values of EXPRESSIONs as output. After that, Magma breaks out of the call.
If this happens in a function call, no values are returned from the function. (This is also true for calls to intrinsic functions that result in errors.)
> // simple error-statement
> Stars := procedure(n)
procedure> if n notin [0..80] then
procedure|if> error "Runtime error in 'Stars': Argument 1 (", n,
procedure|if|error> ") not in range [0..80]";
procedure|if> else print "*"^n;
procedure|if> end if;
procedure> end procedure;
> Stars(15);
***************
> Stars(81);
Runtime error in 'Stars': Argument 1 ( 81 ) not in range [0..80]
> // equivalent procedure, using error-if
> Stars := procedure(n)
procedure> error if n notin [0..80],
procedure|error> "Runtime error in 'Stars': Argument 1 (", n,
procedure|error> ") not in range [0..80]";
procedure> print "*"^n;
procedure> end procedure;
> // same output
[Next] [Prev] [Right] [____] [Up] [Index] [Root]