這是兩種不同的錯誤機制,不能以這種方式組合。 ztrap和%ETN用於高速緩存級錯誤(尖括號錯誤,如<UNDEFINED>
)。 %狀態對象用於應用程序級錯誤(包括通過使用緩存類庫發生的錯誤),您可以選擇自己想要如何處理它們。通過Cache錯誤機制來處理錯誤的%Status並沒有意義,因爲沒有發生Cache錯誤。
通常是大多數人做的是一個類似於:
d:$$$ ISERR(狀態)$$$ SomeMacroRelevantToMyAppThatWillHandleThisStatus(狀態)
它可以用自己的整個創建自己的域名%主機的%狀態代碼與您的應用程序的值班人員%味精值。您的應用程序可能嘗試連接到FTP服務器並輸入了錯誤的密碼,但這並不會導致<DISCONNECT>
,也沒有理由調查堆棧,只需要處理一個應用程序級別的錯誤,可能通過詢問用戶輸入新密碼。
看起來很奇怪,有兩種並行的錯誤機制,但它們描述了兩種不同類型的錯誤。想一個是「平臺」級錯誤,另一個是「應用程序級錯誤」
編輯:我忘了一件事,嘗試DecomposeStatus ^%apiOBJ(status)或## class(%Status).LogicalToOdbc (狀態)將狀態對象轉換爲人類可讀的字符串。另外,如果您正在執行命令行調試,或者只是想將可讀格式打印到主體設備上,則可以使用$ system.OBJ.DisplayError(status)。
我剛剛和一位朋友談過,這位朋友解釋說有一種方法可以做這個!他將很快發佈。 – mcbainpc