Saltearse al contenido

Códigos de retorno

WebAssembly permite excepciones (traps), sin embargo esta característica no se utiliza en Hooks. En su lugar, solo existe una forma de devolver valores desde cualquier API de Hook (puedes pensar que todas las APIs son noexcept).

Para facilitar un manejo eficiente de errores:

  1. Todas las funciones de la API de Hooks devuelven un entero con signo.
  2. Todos los códigos negativos representan un error.
  3. Todos los códigos 0 o mayores representan una salida válida de la función, normalmente (aunque no siempre) el número de bytes leídos o escritos.

Los códigos de error son globales para todas las APIs de Hooks y se muestran en la siguiente tabla:

NombreValorDescripción
SUCCESS>= 0Los valores no negativos indican éxito y normalmente representan bytes escritos o eventos realizados
OUT_OF_BOUNDS-1Un puntero o longitud apunta fuera de la memoria permitida del Hook
INTERNAL_ERROR-2Error interno, no relacionado con entradas. Debe reportarse
TOO_BIG-3Valor o parámetro demasiado grande
TOO_SMALL-4Buffer de salida demasiado pequeño
DOESNT_EXIST-5Elemento no encontrado
NO_FREE_SLOTS-6No hay slots disponibles (máximo 255)
INVALID_ARGUMENT-7Parámetro inválido
ALREADY_SET-8Parámetro ya establecido previamente
PREREQUISITE_NOT_MET-9Falta requisito previo para llamar a la API
FEE_TOO_LARGE-10Fee calculado excesivamente grande
EMISSION_FAILURE-11Fallo al ejecutar emit()
TOO_MANY_NONCES-12Más de 256 llamadas a nonce()
TOO_MANY_EMITTED_TXN-13Se emitieron más transacciones de las declaradas
NOT_IMPLEMENTED-14API no implementada completamente
INVALID_ACCOUNT-15Account ID inválido
GUARD_VIOLATION-16Violación del límite de iteraciones en bucle
INVALID_FIELD-17Campo serializado inválido
PARSE_ERROR-18Error al parsear datos
RC_ROLLBACK-19Evento interno de rollback
RC_ACCEPT-20Evento interno de aceptación
NO_SUCH_KEYLET-21Keylet no encontrado o inválido
NOT_AN_ARRAY-22Objeto no es un array
NOT_AN_OBJECT-23Objeto no es un objeto válido
INVALID_FLOAT-10024Número flotante inválido
DIVISION_BY_ZERO-25División por cero
MANITSSA_OVERSIZED-26Mantisa demasiado grande
MANTISSA_UNDERSIZED-27Mantisa demasiado pequeña
EXPONENT_OVERSIZED-28Exponente demasiado grande
EXPONENT_UNDERSIZED-29Exponente demasiado pequeño
OVERFLOW-30Overflow en operación XFL
NOT_IOU_AMOUNT-31Se esperaba IOU pero era XRP
NOT_AN_AMOUNT-32Objeto no es un STAmount
CANT_RETURN_NEGATIVE-33No se puede devolver valor negativo
NOT_AUTHORIZED-34No autorizado para modificar estado
PREVIOUS_FAILURE_PREVENTS_RETRY-35Fallo previo impide reintento
TOO_MANY_PARAMS-36Demasiados parámetros en hook
INVALID_TXN-37Transacción inválida
RESERVE_INSUFFICIENT-38Reserva insuficiente
COMPLEX_NOT_SUPPORTED-39Resultado complejo no soportado
DOES_NOT_MATCH-40Tipos incompatibles
INVALID_KEY-41Clave pública inválida
NOT_A_STRING-42No es una cadena válida
MEM_OVERLAP-43Buffers solapados
TOO_MANY_STATE_MODIFICATIONS-44Demasiadas modificaciones de estado
TOO_MANY_NAMESPACES-45Demasiados namespaces