包含當前錯誤**字串。
$ecode
$ec
發生錯誤時,caché會將$ecode
特殊變數設定為逗號分隔的字串,其中包含與錯誤相對應的錯誤**。例如,當引用未定義的全域性變數時,caché將$ecode
特殊變數設定為以下字串:
,m7,
$ecode
可以包含iso 11756-1999標準m錯誤**,格式為m#,其中#是整數。例如,m6和m7分別是「未定義的區域性變數」和「未定義的全域性變數」。 (m7為全域性變數和程序專用全域性發布。)
$ecode
還可以包含與caché general system錯誤**相同的錯誤**(在終端提示符處返回到$zerror
特殊變數的錯誤**)。但是,$ecode
在這些錯誤**前加上「z」
,並刪除了尖括號。因此$ecode
錯誤zsyntax是乙個錯誤,zillegal value是乙個
錯誤,zfunction是乙個
錯誤。
$ecode
不為提供它的那些錯誤**保留任何額外的錯誤資訊;因此zprotect是乙個錯誤;附加資訊元件儲存在
$zerror
中,但不在$ecode
中。
如果在$ecode
已經包含以前的錯誤**時出現錯誤,則在出現新錯誤時,現有的錯誤堆疊將被清除。新的錯誤堆疊將只包含顯示當前錯誤發生時狀態的條目。(這與早期的$ecode
行為不同,在早期的$ecode
行為中,舊的錯誤堆疊會一直存在,直到被顯式清除。)
如果有多個錯誤**,caché會按照收到的順序,在當前$ecode
值的末尾追加每個錯誤的**。產生的$ecode
字串中的每個錯誤都用逗號分隔,如下所示:
,zstore,m6,zillegal value,zprotect,
在上述情況下,最近的錯誤是
錯誤。
也可以顯式清除或設定$ecode
。當終止當前程序時,總是清除$ecode
。
可以通過將$ecode
設定為空字串("")
來清除它,如下所示:
set $ecode=
""
將$ecode
設定為空字串會產生以下效果:
不能新建$ecode
特殊變數。嘗試這樣做會產生錯誤。
可以通過將$ecode
設定為非空字串的值來強制執行錯誤。將$ecode
設定為任何非null值將在執行objectscript例程期間強制執行直譯器錯誤。在caché將$ecode
設定指定的非空值之後,caché採取以下步驟:
將指定的值寫入$ecode
,覆蓋以前的所有值。
生成錯誤。(這將
$zerror
設定為值)。
將控制權傳遞給已建立的任何錯誤處理程式。錯誤處理程式可以檢查選擇的$ecode
字串值,並採取措施適當地處理條件。
如果$ecode
中累積字串的長度超過512個字元,導致字串溢位的錯誤**將清除並替換$ecode
中的當前錯誤**列表。在這種情況下,$ecode
中的錯誤列表是自最近一次字串溢位以來的錯誤列表,從導致溢位的錯誤開始。
$ecode
特殊變數的格式是由乙個或多個錯誤**組成的逗號包圍的列表。以字母u開頭的錯誤**是為使用者保留的。所有其他錯誤**都保留給caché。
使用者定義的$ecode
值應該與caché自動生成的值不同。為了確保這一點,請始終在錯誤文字前面加上字母u
。另外,請記住用逗號來描述錯誤**。例如:
set $ecode=
",upassword expired!,"
檢查$zerror
而不是$ecode
的caché錯誤
錯誤處理程式應該檢查$zerror
,而不是$ecode
來查詢最近的caché錯誤。
第五章 Cach 變數大全 HALT 變數
示例 包含暫停陷阱例程呼叫。halt halt包含當前暫停陷阱例程的名稱。當遇到halt命令時,應用程式將呼叫暫停陷阱例程。該暫停陷阱例程可以在發出halt命令之前執行清理或日誌記錄處理,或者可以替代其他處理而不是暫停程式執行。可以使用set命令將 halt設定為暫停陷阱例程。暫停陷阱例程由帶引號的...
第七章 Cach 變數大全 IO 變數
包含當前輸入 輸出裝置的id。io i io包含所有輸入 輸出操作所指向的當前裝置的裝置id。如果輸入和輸出裝置不同,則 io包含當前輸入裝置的id。cach 在登入時將 io的值設定為主要輸入 輸出裝置。principal包含主體裝置的id。發出use命令來更改當前裝置。只有use和close命令...
第二十二章 Cach 變數大全 X 變數
包含游標的當前水平位置。x x包含游標的當前水平位置。將字元寫入裝置時,cach 會更新 x以反映水平游標位置。輸出的每個可列印字元將x加1 回車符 as cii13 或換 頁符 asci i12 將 x加1。回車符 ascii 13 或換頁符 ascii 12 將 x加1。回車 符 a scii ...