文章目录
第二十三章 使用 %Status 值
许多类使用 %Status
数据类型类来表示状态信息,并且它们的方法返回表示成功或错误的 %Status
值(状态)。如果状态表示一个错误(或多个错误),则状态值还包括有关错误的信息。
还可以返回自己的状态值。
本文讨论状态值以及如何使用它们。
使用状态值的基础知识
如上所述,许多 类中的方法返回一个状态以指示成功或错误。例如,%Library.Persistent中的
%Save()` 方法返回一个状态。对于任何此类方法,请务必获取返回值。然后检查状态,然后适当地继续。基本工具如下:
- 要检查状态是表示成功还是错误,请使用以下任一方法:
-
$$$ISOK
和$$$ISERR
宏,在包含文件%occStatus.inc
中定义。此包含文件在所有对象类中自动可用。 -
$SYSTEM.Status.IsOK()
和$SYSTEM.Status.IsError()
方法,它们在终端(不能使用宏)中特别方便。
- 要显示错误详细信息,请使用
$SYSTEM.OBJ.DisplayError()
或 $SYSTEM.Status.DisplayError()
。这些方法彼此等效。他们将输出写入当前设备。 - 要获取包含错误详细信息的字符串,请使用
$SYSTEM.Status.GetErrorText()
。
示例
下面是一个显示 $SYSTEM.Status.GetErrorText()
用法的部分示例:
注意:一些 ObjectScript
程序员使用字母 t
作为前缀来表示临时变量,因此可能会在代码示例中看到 tSC
用作变量名,意思是“临时状态代码”。你可以随意使用这个约定,但是这个变量名并没有什么特别之处。
状态值中报告的多个错误
如果一个状态值表示多个错误,则这些技术只为提供最新的信息。要获取有关由状态值表示的所有错误的信息,请使用 $SYSTEM.Status.DecomposeStatus()
,它返回错误详细信息的数组(通过引用,作为第二个参数)。例如:
变量errorlist
是一个包含错误信息的数组。下面显示了一个部分示例,其中包含一些人工换行符以提高可读性:
如果想记录每条错误消息,可以修改前面的记录示例,如下所示:
注意:如果再次调用 $SYSTEM.Status.DecomposeStatus()
并传入相同的错误数组,则任何新错误都会附加到数组中。
返回状态值
还可以返回自己的自定义状态值。要创建状态值,请使用以下构造:
或等效地:
例如:
要包含有关其他错误的信息,请使用 $SYSTEM.Status.AppendStatus()
修改状态值。例如: