これらは 2 つの異なるエラー メカニズムであり、このように組み合わせることはできません。ztrap と %ETN は、キャッシュ レベル エラー (のような山かっこエラー<UNDEFINED>
) 用です。%Status オブジェクトは、アプリケーション レベルのエラー (キャッシュ クラス ライブラリを使用して発生したエラーを含む) 用であり、それらの処理方法を自分で選択できます。キャッシュ エラーが発生していないため、キャッシュ エラー メカニズムを介して不正な %Status を処理しても意味がありません。
一般的に、ほとんどの人が行うことは、次のようなことです。
d:$$$ISERR(ステータス) $$$SomeMacroRelevantToMyAppThatWillHandleThisStatus(ステータス)
アプリケーションに付随する %msg 値を持つ %Status コードの独自のホスト全体を使用して、独自のドメインを作成することができます。あなたのアプリは FTP サーバーに接続しようとして間違ったパスワードを使用した可能性がありますが、それはエラーをスローせず<DISCONNECT>
、スタックを調査する理由はありません。処理が必要なアプリケーション レベルのエラーであり、おそらくユーザーに確認する必要があります。新しいパスワードを入力します。
これら 2 つのエラー メカニズムが並行して存在するのは奇妙に思えるかもしれませんが、これらは 2 つの異なるタイプのエラーを説明しています。そのうちの 1 つは「プラットフォーム」レベルのエラーであり、もう 1 つは「アプリケーション レベルのエラー」であると考えてください。
編集:私が忘れていたことの1つは、 DecomposeStatus^%apiOBJ(status) または ##class(%Status).LogicalToOdbc(status) を試して、ステータスオブジェクトを人間が読める文字列に変換してください。また、コマンド ライン デバッグを行っている場合、または読み取り可能なフォームをプリンシパル デバイスに出力したい場合は、$system.OBJ.DisplayError(status) を使用できます。