Article
· Sept 5 1m de lecture

Comment générer une erreur personnalisée

Rubrique FAQ InterSystems

Si vous souhaitez générer une erreur personnalisée arbitraire dans un bloc TRY, vous pouvez transmettre une exception avec un throw comme suit. Dans l'exemple suivant, une erreur personnalisée est générée si Stcount est inférieur à 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
    }
 }
}

Dans l'exemple ci-dessus, si Stcount est inférieur à 1, une erreur comme celle-ci sera générée :

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

Pour plus d'informations, consultez la documentation suivante :
ObjectScript command _THROW

Si vous souhaitez créer un code d’état arbitraire, procédez comme suit :

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
Discussion (0)1
Connectez-vous ou inscrivez-vous pour continuer