solidity中error用法
Solidity中的error用于解释操作失败的原因,可以继承,参数列表可以只定义数据类型或为空,不能重载,不能作为控制流的一种手段,合约内部和外部均可定义。
调用时必须用revert修饰,revert用于回退error中数据给调用者并回退当前调用中所有更改。
pragma ^0.8.4;
error InsufficientBalance(uint256 available,uint256 required);//合约外部定义error
contract TestToken{
mapping(address => uint) balance;
function transfer(address to, uint256 amount) public{
//ether不够,抛出异常,回退
if(amount > balance[msg.sender]){
revert InsufficientBalance({
available:balance[msg.sender],
required:amount
});
}
//否则,转账扣ether
balance[msg.sender] -= amount;
balance[to] += amount;
}
}
来源(solidity官方文档):https://docs.soliditylang.org/en/v0.8.13/contracts.html#errors-and-the-revert-statement

浙公网安备 33010602011771号