Errors
// From system events
await client.query.system.events(async (records) => {
for (const tx of records) {
if (client.events.system.ExtrinsicFailed.is(tx.event)) {
const { dispatchError } = tx.event.palletEvent.data;
if (client.errors.assets.AlreadyExists.is(dispatchError)) {
console.log('Assets.AlreadyExists error occurred!');
} else {
console.log('Other error occurred', dispatchError);
}
}
}
});// Or from events in transaction callback
client.tx.balances.transferKeepAlive('<BOB_ADDRESS>', 1_000n)
.signAndSend(aliceAddressOrKeyPair, ({ dispatchError, events }) => {
if (dispatchError) { // DispatchError extracted from ExtrinsicFailed event if any
// Check for specific error
if (client.errors.balances.InsufficientBalance.is(dispatchError)) {
console.log('Balance too low to send value!');
} else {
console.log('Other error occurred', dispatchError);
}
// Check by finding error metadata
const errorMeta = client.registry.findErrorMeta(dispatchError);
if (errorMeta) {
const { pallet, name, docs } = errorMeta;
console.log(`Error: [${pallet}][${name}] - ${docs.join(',')}`);
}
}
});Last updated