判断一个合约是否是erc20合约

function checkERC20(address[] memory _tokens) public view returns(bool[] memory){

        bool[] memory _args = new bool[](_tokens.length);

        for(uint i;i< _tokens.length;i++){
            address _token = _tokens[i];
            _args[i] = true;

            try  IERC20Metadata(_token).name()  returns (string memory ) {

            } catch  {
              _args[i] = false;
              continue;
            }

            try IERC20Metadata(_token).decimals() returns (uint8 ) {

            } catch  {
                _args[i] = false;
                continue;
            }
    }
        return _args;
    }

写了一个合约判断合约里面是否有erc20里面的那些成员,用try catch捕获了,但是试了一下,判断某些合约0x2D18f2d27D50C9b4013DEBA3D54f60996bD8847E比如这个bsc主网的,仍然会执行报错,为什么catch没捕获到这个的错误呢?有些地址是可以的

请先 登录 后评论

1 个回答

Tiny熊 - 布道者
  擅长:智能合约,以太坊
请先 登录 后评论
  • 1 关注
  • 0 收藏,368 浏览
  • 孙三胖 提出于 2024-03-02 18:11

相似问题