第143篇 solidity 中的 error-revert
Posted wonderBlock
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第143篇 solidity 中的 error-revert相关的知识,希望对你有一定的参考价值。
Error:error 是 solidity 0.8.4 版本新加的内容,方便且高效(省gas)地向用户解释操作失败的原因。人们可以在contract之外定义异常。
一、合约示例1
自定义 error 实例通常比使用字符串描述要便宜得多,因为可以使用错误的名称来描述它,它只编码为四个字节。
// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.4;
contract VendingMachine
address owner;
error Unauthorized();
function buy(uint amount) public payable
if (amount > msg.value / 2 ether)
revert("Not enough Ether provided.");
// Alternative way to do it:
require(
amount <= msg.value / 2 ether,
"Not enough Ether provided."
);
// Perform the purchase.
function withdraw() public
if (msg.sender != owner)
revert Unauthorized();
payable(msg.sender).transfer(address(this).balance);
二、合约示例2
自定义 errors 允许为故障情况定义描述性名称和数据。errors 可以用于 revert 语句中。与字符串描述相比
以上是关于第143篇 solidity 中的 error-revert的主要内容,如果未能解决你的问题,请参考以下文章