📅  最后修改于: 2020-11-04 04:30:38             🧑  作者: Mango
Solidity提供了各种用于错误处理的功能。通常,发生错误时,状态会恢复为原始状态。其他检查是为了防止未经授权的代码访问。以下是错误处理中使用的一些重要方法-
尝试以下代码以了解Solidity中错误处理的工作方式。
pragma solidity ^0.5.0;
contract Vendor {
address public seller;
modifier onlySeller() {
require(
msg.sender == seller,
"Only seller can call this."
);
_;
}
function sell(uint amount) public payable onlySeller {
if (amount > msg.value / 2 ether)
revert("Not enough Ether provided.");
// Perform the sell operation.
}
}
调用revert时,将返回如下的十六进制数据。
0x08c379a0 // Function selector for Error(string)
0x0000000000000000000000000000000000000000000000000000000000000020 // Data offset
0x000000000000000000000000000000000000000000000000000000000000001a // String length
0x4e6f7420656e6f7567682045746865722070726f76696465642e000000000000 // String data