- require
- revert
- assert
require
只有满足前面表达式才能继续运行。
1 | require(i <= 10,"i>10"); |
revert
不包含表达式,要自己判断。
1 | if(i>10){ |
assert
断言不包括报错信息。
1 | assert(num == 123); |
状态回滚
如果出现错误,那么状态就会回滚,gas
费退回。
自定义异常
1 | function test(unit _i) public pure{ |
如果报错信息非常长,则会浪费很多 gas,所以,可以通过自定义 error 来节约 gas。
1 | error MyError(); |
error
1 | error MyError(address caller,unit i); |