Escrito por

Sales Engineer at InterSystems Iberia
Artículo Ricardo Paiva · dic 4, 2023 2m read

Cómo crear errores definidos por el usuario

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"?> 
<MsgFileLanguage="en"><MsgDomainDomain="UserErrors"><MessageId="-111"Name="MyError">An error has occured</Message> 
    <MessageId="-222"Name="MyError2">An error has occured 2</Message> 
  </MsgDomain></MsgFile>

En cuanto tengamos el archivo XML creado, hemos de cargarlo en el namespace que deseamos utilizar

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

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")