Artículo
· 9 dic, 2024 Lectura de 1 min

¿Cómo generar un error personalizado?

Rúbrica de preguntas frecuentes de InterSystems

 

Si queréis generar un error personalizado arbitrario en un bloque TRY, podéis pasar una excepción con un throw de la siguiente manera. En el siguiente ejemplo, se genera un error personalizado si el valor de Stcount es menor que 1.

Class User.Test
{

ClassMethod ExceptionTest()
 {
    try
    {
      // : some codes
      if (Stcount<1) {
          throw ##class(%Exception.General).%New("User-defined error", "5001", "location", "Data at location error")
          // User-created errors are 5001 and above
      }
    }
    catch ex
    {
      write "Errors #", ex.Code, ": ", ex.Name, " : ", ex.Location, " ", ex.Data
      return
    }
 }
}

En el ejemplo anterior, si Stcount es menor que 1, aparecerá un error como el siguiente:

USER>do ##class(User.Test).ExceptionTest()
Error #5001: User-defined error: Data at location error

Para más información, consultad la siguiente documentación:
Comando _THROW de ObjectScript

Si deseáis crear un código de estado arbitrario, haced lo siguiente:

USER>set st = ##class(%SYSTEM.Status).Error(5001,"This is a user-defined error")

USER>zwrite st
st="0 "_$lb($lb(5001,"This is a user-defined error",,,,,,,,$lb(,"USER",$lb("e^zError+1^%SYSTEM.Status.1^1","e^^^0"))))/* Error #5001: This is a user-defined error */
USER>do $SYSTEM.Status.DisplayError(st)

Error #5001: This is a user-defined error
Comentarios (0)1
Inicie sesión o regístrese para continuar