Skip to main content

Generate Contract Errors

There are a number of ways to generate errors in contracts.

One way is error enum types, that are defined by contracts and that map errors to unsigned 32-bit integer values. They are usable as error values in the return types of contract functions.

info

The errors example demonstrates how to define your own error types.

Error Enums

Errors are a special type of enum integer type that are stored on ledger as Status values containing a u32 code.

#[contracterror]
#[derive(Copy, Clone, Debug, Eq, PartialEq, PartialOrd, Ord)]
#[repr(u32)]
pub enum Error {
AnError = 1,
}

When converted to XDR, the value becomes an ScVal, containing a ScStatus, containing the integer value of the error as contract error.

{ "status": { "contractError": 1 } }