Como gerar um erro personalizado
Rubrica de FAQ da InterSystems
Se você quiser gerar um erro personalizado arbitrário dentro de um bloco TRY, pode passar uma exceção com um throw, da seguinte forma. No exemplo abaixo, um erro personalizado é gerado se Stcount for 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
}
}
}No exemplo acima, se Stcount for menor que 1, um erro como o seguinte será exibido:
USER>do ##class(User.Test).ExceptionTest()
Error #5001: User-defined error: Data at location errorPara mais informações, consulte a seguinte documentação:
ObjectScript command _THROW
Se você quiser criar um código de status arbitrário, faça o seguinte:
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 errorIr para o posto original escrito por @Megumi Kakechi
Discussão (0)0