首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何记录文本(并查看日志)

如何记录文本(并查看日志)
EN

Ethereum用户
提问于 2021-03-14 00:13:47
回答 1查看 69关注 0票数 0

我正在使用混合方式编写一份合同,我碰到了一个错误,但我无法调试它。当我在remix中输入事务散列时,它告诉我json是空的("")。

我正在测试ropsten测试网络,并使用元请求可能钱包。

有办法记录文本并查看这些日志吗?

EN

回答 1

Ethereum用户

发布于 2021-03-14 02:38:12

失败的事务不能发出事件,因为失败的==什么都没有发生。这对调试是不方便的。

您可以使用require()检查假设,并发出一个理由。当require()表达式的计算结果为false时,可以观察到原因。

合同失败的原因有很多。有些是故意捕获并发出原因的,而另一些则是因为协议或不可能进行进一步的处理。

一个协议级的错误将发送更多的钱比实际的帐户。你自己去查查,情况并非如此。在合同中你不能做任何事情来使它更有信息,因为它不会有那么远。

在除以零、访问超出边界的数组等情况下,不可能进行进一步的处理,而且可以使用require()检查这些内容。

例如:

代码语言:javascript
复制
function elementAtIndex(uint row) external view returns(address) {
  require(row < myAddressArray.length, "row is out of range");
  return myAddressArray[row];
}

或者..。

代码语言:javascript
复制
function divider(uint nom, uint denom) extern pure returns(uint) {
  require(denom > 0, "denominator is zero");
  return nom/demon;
}

作为一种普遍的启发式方法,尝试捕捉每一个可能发生的错误。你经常可以报告问题的所在,如果你没有收到消息,至少你知道问题不是什么。当你优化时,删除不可能的条件检查,这些条件可能是你为调试目的插入的,但倾向于为可能与输入相关的情况保留信息,因为它能帮助每个人了解正在发生的事情。

希望能帮上忙。

票数 0
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/94609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档