Preguntas frecuentes de InterSystems
Para crear un error definido por el usuario, hemos de preparar un XML que describa el código de error y el mensaje correspondiente que desea utilizarse como error definido por el usuario.
Hemos de establecer el código de error como un número entero negativo.
<?xml version="1.0" encoding="UTF-8" ?>
<MsgFile Language="en">
<MsgDomain Domain="UserErrors">
<Message Id="-111" Name="MyError">An error has occured</Message>
<Message Id="-222" Name="MyError2">An error has occured 2</Message>
</MsgDomain>
</MsgFile>
XMLXML
En cuanto tengamos el archivo XML creado, hemos de cargarlo en el namespace que deseamos utilizar
set x=##class(%MessageDictionary).Import("error.xml")
ObjectScriptObjectScript
Una vez cargado, podremos lanzar y presentar errores definidos por el usuario de la siguiente manera:
USER>set error=$system.Status.Error(-111) // Create error with error code -111
USER>write $system.Status.GetErrorText(error) // Output error message from error
Error <UserErrors>-111: An error has occurred
USER>do $system.Status.DecomposeStatus(error,.val) // Set error information to array variable
USER>zwrite val
val=1
val(1)="Error <UserErrors>-111: An error has occurred"
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")
ObjectScriptObjectScript