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没捕获到这个的错误呢?有些地址是可以的