Это два разных механизма ошибок, которые нельзя объединить таким образом.ztrap и% ETN предназначены для ошибок уровня кэша (ошибки в угловых скобках, например <UNDEFINED>
).Объекты% Status предназначены для ошибок уровня приложения (в том числе ошибок, возникших в результате использования библиотеки классов кэша), и вы можете сами выбирать, как их обрабатывать.На самом деле не имеет смысла обрабатывать плохой% Status с помощью механизма ошибок Cache, потому что ошибки Cache не произошло.
Обычно то, что делает большинство людей, похоже на:
d: $$$ ISERR (статус) $$$ SomeMacroRelevantToMyAppThatWillHandleThisStatus (статус)
Возможно создать свойсобственный домен со своим собственным хостом кодов% Status с соответствующими значениями% msg для вашего приложения.Ваше приложение, возможно, пыталось подключиться к FTP-серверу и имело неверный пароль, но это не выдает <DISCONNECT>
, и нет никаких причин для исследования стека, просто ошибка уровня приложения, которая должна быть обработана, возможно,просит пользователя ввести новый пароль.
Может показаться странным, что существуют эти два параллельных механизма ошибок, но они описывают два разных типа ошибок.Думайте, что одна из них - это ошибки уровня «платформы», а другая - «ошибки уровня приложения»
Редактировать: Одна вещь, которую я забыл, попробуйте DecomposeStatus ^% apiOBJ (status) или ## class (% Status).LogicalToOdbc (status) для преобразования объекта статуса в удобочитаемую строку.Кроме того, если вы выполняете отладку командной строки или просто хотите распечатать читаемую форму на основном устройстве, вы можете использовать $ system.OBJ.DisplayError (status).