記事
Mihoko Iijima · 2021年4月22日 2m read

ユーザ定義エラーを作成する方法のご紹介

これは InterSystems FAQ サイトの記事です。

ユーザ定義エラーとして使用したいエラーコードと対応するメッセージを記述したXMLを用意します。

なお、エラーコードは負の整数で設定してください。

<?xml version="1.0" encoding="UTF-8" ?> 
<MsgFile Language="ja">
  <MsgDomain Domain="UserErrors">
    <Message Id="-111" Name="MyError">エラーが発生しました</Message> 
    <Message Id="-222" Name="MyError2">エラーが発生しました2</Message> 
  </MsgDomain>
</MsgFile>

 

XML ファイルが作成できたら使用したいネームスペースにロードします。

set x=##class(%MessageDictionary).Import("error.xml")

 

ロード完了後、次のようなコマンドでユーザ定義エラーを取得、表示することができます。

USER>set error=$system.Status.Error(-111) // エラーコード -111 を指定してエラーを作成

USER>write $system.Status.GetErrorText(error) // エラーからエラーメッセージを出力
エラー <UserErrors>-111: エラーが発生しました
USER>do $system.Status.DecomposeStatus(error,.val)  // エラーの情報を配列変数にセット

USER>zwrite val
val=1
val(1)="エラー <UserErrors>-111: エラーが発生しました"
val(1,"caller")="zError+1^%SYSTEM.Status.1"
val(1,"code")=-111
val(1,"dcode")=-111
val(1,"domain")="UserErrors"
val(1,"namespace")="TEST"
val(1,"param")=0
val(1,"stack")=$lb("e^zError+1^%SYSTEM.Status.1^1","e^^^0")

 

 

10
1 0 0 7
Log in or sign up to continue