前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Caché 变量大全 $ECODE 变量

Caché 变量大全 $ECODE 变量

作者头像
用户7741497
发布2022-05-10 10:44:12
9730
发布2022-05-10 10:44:12
举报
文章被收录于专栏:hml_知识记录

Caché 变量大全 $ECODE 变量

包含当前错误代码字符串。

大纲

代码语言:javascript
复制
$ECODE
$EC

描述

发生错误时,Caché会将$ECODE特殊变量设置为逗号分隔的字符串,其中包含与错误相对应的错误代码。例如,当引用未定义的全局变量时,Caché将$ECODE特殊变量设置为以下字符串:

代码语言:javascript
复制
,M7,

$ECODE可以包含ISO 11756-1999标准M错误代码,格式为M#,其中#是整数。例如,M6和M7分别是“未定义的局部变量”和“未定义的全局变量”。 (M7为全局变量和进程专用全局发布。)

$ECODE还可以包含与Caché General System错误代码相同的错误代码(在终端提示符处返回到$ZERROR特殊变量的错误代码)。但是,$ECODE在这些错误代码前加上“Z”,并删除了尖括号。因此$ECODE错误ZSYNTAX是一个<SYNTAX>错误,ZILLEGAL VALUE是一个<ILLEGAL VALUE>错误,ZFUNCTION是一个<FUNCTION>错误。$ECODE不为提供它的那些错误代码保留任何额外的错误信息;因此ZPROTECT是一个<PROTECT>错误;附加信息组件保存在$ZERROR中,但不在$ECODE中。

如果在$ECODE已经包含以前的错误代码时出现错误,则在出现新错误时,现有的错误堆栈将被清除。新的错误堆栈将只包含显示当前错误发生时状态的条目。(这与早期的$ECODE行为不同,在早期的$ECODE行为中,旧的错误堆栈会一直存在,直到被显式清除。)

如果有多个错误代码,Caché会按照收到的顺序,在当前$ECODE值的末尾追加每个错误的代码。产生的$ECODE字符串中的每个错误都用逗号分隔,如下所示:

代码语言:javascript
复制
,ZSTORE,M6,ZILLEGAL VALUE,ZPROTECT,

在上述情况下,最近的错误是<PROTECT>错误。

也可以显式清除或设置$ECODE。当终止当前进程时,总是清除$ECODE

清除 $ECODE

可以通过将$ECODE设置为空字符串("")来清除它,如下所示:

代码语言:javascript
复制
SET $ECODE=""

$ECODE设置为空字符串会产生以下效果:

  • 它清除所有现有的$ECODE值。它对现有的$ZERROR值没有影响。
  • 它会为作业清除错误堆栈。这意味着对$STACK函数的后续调用返回当前的执行堆栈,而不是最后一个错误堆栈。
  • 它影响$ETRAP错误处理程序的错误处理控制流。

不能新建$ECODE特殊变量。尝试这样做会产生<SYNTAX>错误。

Setting $ECODE

可以通过将$ECODE设置为非空字符串的值来强制执行错误。将$ECODE设置为任何非null值将在执行ObjectScript例程期间强制执行解释器错误。在Caché将$ECODE设置指定的非空值之后,Caché采取以下步骤:

  1. 将指定的值写入$ECODE,覆盖以前的所有值。
  2. 生成<ECODETRAP>错误。(这将$ZERROR设置为值<ECODETRAP>)。
  3. 将控制权传递给已建立的任何错误处理程序。错误处理程序可以检查选择的$ECODE字符串值,并采取措施适当地处理条件。

$ECODE字符串溢出

如果$ECODE中累积字符串的长度超过512个字符,导致字符串溢出的错误代码将清除并替换$ECODE中的当前错误代码列表。在这种情况下,$ECODE中的错误列表是自最近一次字符串溢出以来的错误列表,从导致溢出的错误开始。

注意

创建自己的错误代码

$ECODE特殊变量的格式是由一个或多个错误代码组成的逗号包围的列表。以字母U开头的错误代码是为用户保留的。所有其他错误代码都保留给Caché。

用户定义的$ECODE值应该与Caché自动生成的值不同。为了确保这一点,请始终在错误文本前面加上字母U。另外,请记住用逗号来描述错误代码。例如:

代码语言:javascript
复制
 SET $ECODE=",Upassword expired!,"

检查$ZERROR而不是$ECODE的Caché错误

错误处理程序应该检查$ZERROR,而不是$ECODE来查找最近的Caché错误。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Caché 变量大全 $ECODE 变量
  • 大纲
  • 描述
  • 清除 $ECODE
  • Setting $ECODE
  • $ECODE字符串溢出
  • 注意
    • 创建自己的错误代码
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档