009.智能合约的结构——05错误处理

在 Solidity 中,可以使用 requirerevert 函数来实现错误处理。

下面是一个简单的例子:

pragma solidity ^0.8.7;

contract SimpleTransfer {
    mapping (address => uint256) public balance;

    function transfer(address payable to, uint256 value) public {
        // 检查接收地址是否为空
        require(to != address(0), "Invalid address.");
        // 检查转账金额是否大于0
        require(value > 0, "Invalid value.");
        // 检查发送者的余额是否足够
        require(balance[msg.sender] >= value, "Insufficient balance.");
        
        // 转账
        if(!to.send(value)) {
            revert("Transfer failed.");
        }
    }
}

在这个例子中,首先使用 require 函数检查接收地址是否为空、转账金额是否大于0、发送者的余额是否足够,如果任意一个条件不成立就会终止事务并返回错误信息。

如果检查都通过,再进行转账,如果转账失败,就调用 revert 函数,终止事务并返回错误信息 "Transfer failed."。

通过使用requirerevert 函数,我们可以在智能合约中有效地处理错误,避免不正确的状态被写入到区块链上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值