You are viewing a single comment's thread from:

RE: Solidity开发指南

in #starnotelast month

Assert, Require, Revert

assert(bool condition)
⽤于判断内部错误,条件不满⾜时抛出异常.函数只能用于测试内部错误,并检查非变量。
用于pure函数,会对用户惩罚,扣光gas

require(bool condition)
require(bool condition, string message) //提供错误信息。
函数用于确认条件有效性,例如输入变量,或合约状态变量是否满足条件,或验证外部合约调用返回的值。⽤于判断输⼊或外部组件错误,条件不满⾜时抛出异常。
会退还剩余gas

revert() //终⽌执⾏并还原改变的状态
revert(string reason) //提供⼀个错误信息。
可以用来标记错误并回退当前的调用。 revert 调用中还可以包含有关错误信息的参数,这个信息会被返回给调用者。

require(msg.value % 2 == 0, "Even value required.");
assert(this.balance == balanceBeforeTransfer - msg.value / 2);

if (amount > msg.value / 2 ether){
  revert("Not enough Ether provided.");
}