solidity 为何使用require,gas反而被耗尽?无论设置多大的gas都一样

图片说明

代码如下:

 pragma solidity ^0.4.25;

contract aPlusb{
    function aPlusb(){}
    uint a=1;
    event happen(uint input,uint output);
    function plus(address addr,uint a,uint b) returns (uint){
        require(a==2);
        uint aa;
        uint bb;
        uint cc;
        uint dd;
        aa+=bb;
        bb+=1;
        cc+=3;
        dd+=cc;
        happen(a,a+1);
        return a+1;
    }
}

在remix-ide里直接使用它的jvm虚拟机测试没问题,但是一旦连接到我geth启动的私链,再调用plus函数,就会使我的gas耗尽,并不返回gas。。头疼

不建议用 require() 来返回错误信息,使用自定义Error可以省下不少的Gas费

error ErrorMsg(uint256 num); //error需要写在合约的外面

contract TestContract {
  uint256 public num = 1;

  function test() public view
  {
    require(num != 1, 'ErrorMsg'); //替换成下面这个

    if(num == 1)
    {
      revert ErrorMsg(num);
    }
  }
}