Solidity语言中定义了以下三种错误处理方式:
require
:用于在执行前验证输入和条件;revert
:用于直接触发回退,可自定义异常处理;assert
:用于检查不应该为假的代码,失败的断言可能意味着代码层面存在错误。
异常处理将撤消当前调用对状态所做的所有更改,并且还可以向调用者抛出错误。
错误处理函数
-
Require()
require(condition, description)
require
首先检查condition
,如果条件为真则继续执行,否则提供一个消息字符串description
用于标记错误(可选)。 -
revert()
if (!condition) revert(); if (!condition) revert(description); if (!condition) revert CustomError(arg1, arg2, ...);
revert
可以直接触发回退,也可以抛出一个消息字符串用于标记错误,也可以自定义错误处理。 -
assert()
assert(condition);
assert
用于检查condition
是否为真,检查失败时抛出异常。