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

 

posted @ 2022-03-28 19:40  豆豆是只乖狗狗  阅读(594)  评论(0编辑  收藏  举报