2.5 Octave 如何报告错误

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