枚举,通常称为 enums,是一种类型,可以表示多个可能的变体之一。在我们的合约中,我们可以使用 enums 来创建自定义错误消息,从而在函数内实现更精确的错误处理。
将自定义错误块复制到你的 main.sw
文件中:
enum InvalidError {
IncorrectAssetId: AssetId,
NotEnoughTokens: u64,
OnlyOwner: Identity,
}
在我们的合约中,我们可以预料到多种情况会导致我们希望抛出错误并停止交易:
针对每种情况,我们可以为错误定义特定的返回类型:
IncorrectAssetId
错误,我们可以返回提交的资产 id,其类型为 AssetId
。 NotEnoughTokens
错误,我们可以将返回类型定义为 u64
,以指示涉及的代币数量。 OnlyOwner
错误,我们可以利用消息发送者的 Identity
作为返回值。
Within our contract, we can anticipate various scenarios where we'd want to throw an error and halt the transaction: