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
| Code | Description |
|---|---|
SessionExpired | Agent session has expired |
OperationNotAllowed | Operation not permitted for this agent |
ProtocolNotAllowed | Protocol not permitted for this agent |
PerTxLimitExceeded | Per-transaction spending limit exceeded |
DailyLimitExceeded | Daily spending limit exceeded |
UnauthorizedAgent | Agent not authorized for this vault |
ExecutionFailed | Operation execution failed |
UnknownError | Unrecognized 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;
}
}