Skip to main content

Error Handling

Handle contract errors gracefully.

ZeroQuantError

All SDK errors extend ZeroQuantError:

import { ZeroQuantError, decodeContractError } from '@zeroquant/sdk';

try {
await client.execute(params);
} catch (error) {
const decoded = decodeContractError(error);

console.log('Error code:', decoded.code);
console.log('Message:', decoded.message);
}

Error Codes

CodeDescription
SessionExpiredAgent session has expired
OperationNotAllowedOperation not permitted for this agent
ProtocolNotAllowedProtocol not permitted for this agent
PerTxLimitExceededPer-transaction spending limit exceeded
DailyLimitExceededDaily spending limit exceeded
UnauthorizedAgentAgent not authorized for this vault
ExecutionFailedOperation execution failed
UnknownErrorUnrecognized error

Handling Specific Errors

try {
await client.execute(params);
} catch (error) {
const decoded = decodeContractError(error);

switch (decoded.code) {
case 'SessionExpired':
// Request new session
break;
case 'DailyLimitExceeded':
// Wait for daily reset
break;
case 'PerTxLimitExceeded':
// Reduce transaction size
break;
default:
throw decoded;
}
}