1

我开始学习 Solidity 以及如何在 Dapp 中与智能合约交互,我想知道如何在我的 Dapp 中记录/处理合约中的错误。

例如,在 Dapp 中我有一个按钮,当你点击它时,它会在合约中运行一个函数,我有require()一个特定的消息:“等待 15m”,基本上,用户每 15 次只能点击一次该按钮分钟。

如果用户已经单击了按钮,则按钮交互在 try/catch 中触发,因此下一次将捕获错误。我的问题是我在控制台中遇到的错误(调试),它就像:

Error: transaction failed (transactionHash="0xe95c970115f5fe55202d04c2e0cd83c2ff67d3653f5397d7739764d685249da6", transaction={"hash":"0xe95c970115f5fe55202d04c2e0cd83c2ff67d3653f5397d7739764d685249da6","type":2,"accessList":null,"blockHash":null,"blockNumber":null,"transactionIndex":null,"confirmations":0,"from":"0xc6682cDC60a1e4603D051e48A2970E4859C62521","gasPrice":{"type":"BigNumber","hex":"0x59682f11"},"maxPriorityFeePerGas":{"type":"BigNumber","hex":"0x59682f00"}......

它只是一个包含这串代码的字符串,没有指定的错误消息require()是触发错误的东西。这是Rinkeby 的交易。

所以,我想,在未来,我可以在我的合同中包含许多功能,其中包含许多require()不同的消息。如何处理这些错误并在 UI 中向用户显示有价值的信息?是否有任何功能可以帮助获取正确的消息?

我正在使用:Ethers - React

提前感谢您的帮助!

4

0 回答 0