12.1.1报错

错误最常见的用途是检查函数的输入参数。以下示例调用错误函数ift函数f在没有任何输入参数的情况下调用。

函数f(arg1)if(nargin==0)error(“input arguments不足”);endifend函数

错误函数时,它会打印给定的消息并返回到Octave提示符。这意味着调用后没有代码错误将被执行。

也可以将标识字符串赋值给错误。如果一个错误有这样的ID,用户可以捕捉到这个错误,这将在下一节中描述。要为错误赋值ID,只需调用错误有两个字符串参数,其中第一个是标识字符串,第二个是实际错误。请注意,错误ID的格式为NAMESPACE:ERROR-NAME。命名空间八度用于Octave自己的错误。任何其他字符串都可用作用户自身错误的命名空间。

 
: error (template, …)
: error (id, template, …)

显示错误消息并停止m文件执行。

在模板字符串的控制下设置可选参数的格式样板使用与相同的规则输出函数函数族(详见格式化输出)并将生成的消息打印在标准错误流动只有在模板字符串后面有其他参数的情况下,才对单引号字符向量进行此格式化。如果没有其他参数,则按字面意思使用模板字符串(即,不解释单引号字符向量中的任何转义序列)。消息前缀为“错误’.

使命感错误还设置Octave的内部错误状态,使控制返回到顶级,而不评估任何进一步的命令。这对于中止函数或脚本非常有用。

如果错误消息没有以换行符结束,Octave将打印导致错误的所有函数调用的回溯。例如,给定以下函数定义:

函数f()g();端函数g()h();端函数h()nargin==1||错误(“nargin!=1”);终止

调用函数f将生成一个消息列表,帮助您快速找到错误的确切位置:

f()错误:nargin!=1error:调用自:error:h第1行,第27列error:g第1行、第15列error:f第1行第15列

如果错误消息以换行符结束,Octave将打印消息,但不会显示任何回溯消息,因为它将控制返回到顶级。例如,将上一个示例中的错误消息修改为以换行符结尾会导致Octave只打印一条消息:

函数h()nargin==1||错误(“nargin!=1\n”);endf()错误:nargin!=1.

输入到的空字符串(“”)错误将被忽略,并且代码将继续运行,就像该语句是NOP一样。这是为了与兼容MATLAB。它还使编写代码成为可能,例如

err_msg=“”;if(CONDITION 1)err_msg=“找到CONDITION1”;elseif(CONDITION2)err_msg=“找到CONDITION 2”;。。。endiferror(err_msg);

只有在查找错误时才停止执行。

实施说明:为了与兼容MATLAB,中的escapesequences样板(例如。,n=>换行符),而不管是否样板已经用单引号定义,只要有两个或多个输入参数。可禁用的转义序列扩展在序列之前使用第二个反斜杠(例如。,n)或使用regexptranslate作用

详见: 警告, 最后一个错误.

从于在函数输入出现错误时使用错误是很常见的,Octave支持简化此类代码的函数。当打印(_U)函数被调用时,它读取函数调用的帮助文本打印(_U),并显示了一个有用的错误。如果帮助文本是用Texinfo编写的,则可能会显示一条错误消息,其中只包含函数原型,如@deftypefn帮助文本的部分。如果帮助文本不是用Texinfo编写的,则错误消息包含整个帮助消息。

考虑以下函数。

##-*-texinfo-*-##@deftypefn{}f(@var{arg1})##此处显示函数帮助文本…##@如果(nargin==0)print_usage(),则结束deftypefnfunction f(arg1);endifend函数

当在没有输入参数的情况下调用它时,会返回以下错误。

f()-|错误:对f的调用无效。正确用法为:-|-|--f(ARG1)-|-||有关内置函数和运算符的其他帮助,详见手册的联机版本。使用命令-|'doc<topic>'搜索手动索引。-|-|有关Octave的帮助和信息也可在WWW-|上获得https://www.octave.org并通过help@octave.org-|邮件列表。
 
: print_usage ()
: print_usage (name)

打印函数的使用消息name.

当在没有输入参数的情况下调用时打印(_U)函数显示当前正在执行的函数的使用消息。

详见: 帮助.

 
: beep ()

扬声器发出嘟嘟声(或可视铃声)。

此函数发送报警字符a到终端。根据用户的配置,这可能会返回可听见的嘟嘟声、可视铃声,或者什么都不返回。

详见: , fputs, 输出函数, 格式化输出.

 
: val = beep_on_error ()
: old_val = beep_on_error (new_val)
: old_val = beep_on_error (new_val, "local")

查询或设置内部变量,该变量控制Octave在打印错误消息之前是否尝试振铃终端。

当从具有的函数内部调用时地方的参数,则该变量会为函数及其调用的任何子程序在本地进行更改。退出函数时将恢复原始变量值。


版权所有 © 2024 Octave中文网

ICP备案/许可证号:黑ICP备2024030411号