Octave 对无效程序报告两种类型的错误。
解析错误(parse error)发生在 Octave 无法理解您输入的内容时。例如,如果您拼错了一个关键字:
octave:13> function z = f (x, y) z = x ||| 2; endfunction
Octave 会立即回复类似如下的消息:
parse error:
syntax error
>>> function z = f (x, y) z = x ||| y; endfunction
^
对于大多数解析错误,Octave 使用插入符号(^)来标记行中无法理解您输入的位置。在此例中,Octave 生成了错误消息,因为逻辑或运算符(||)的关键字拼写错误。它在第三个 | 处标记了错误,因为之前的代码是正确的,但最后一个 | 未被理解。
另一类错误消息出现在求值(evaluation)时。这些错误称为运行时错误(run-time errors),或者有时称为求值错误(evaluation errors),因为它们发生在您的程序被运行或求值时。例如,如果在更正上一个函数定义中的错误后,您输入:
octave:13> f ()
Octave 会回复:
error: `x' undefined near line 1 column 24 error: called from: error: f at line 1, column 22
此错误消息包含多个部分,并提供了相当多的信息来帮助您定位错误源。这些消息从最内层错误点生成,并提供封闭表达式和函数调用的回溯信息。
在上面的示例中,第一行指示名为 x 的变量在某个函数或表达式的第 1 行第 24 列附近被认定为未定义。对于函数内部发生的错误,行号从包含函数定义的文件开头开始计算。对于封闭函数外部发生的错误,行号表示输入行号,通常显示在主提示字符串中。
错误消息的第二行和第三行指示错误发生在函数 f 内部。如果函数 f 是从另一个函数(例如 g)中调用的,则错误列表将以另一行结束:
error: g at line 1, column 17
通过这些函数调用列表,可以相当容易地追踪程序在错误发生前的执行路径,并在重试之前更正错误。
版权所有 © 2024-2026 Octave中文网
ICP备案/许可证号:黑ICP备2024030411号-4