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