Ethereum 有没有一种方法可以将函数返回为false,并在代码恢复之前一直执行代码,eq:function owner(){owner=0x0;revert();}

Ethereum 有没有一种方法可以将函数返回为false,并在代码恢复之前一直执行代码,eq:function owner(){owner=0x0;revert();},ethereum,solidity,smartcontracts,Ethereum,Solidity,Smartcontracts,因此,将revert()或throw放在函数末尾只会阻止任何代码执行,我正在寻找一种巧妙的方法来避免这种情况,无论是使用外部调用、delegatecall还是其他方法,因此: function thiss() { owner = 0x0...; throw; //gives error, no changes whatsoever - what I want is to see changes and then "throw"... } 一种方法是使用事件。您可以发出一个事件,然后返回函数。您

因此,将revert()或throw放在函数末尾只会阻止任何代码执行,我正在寻找一种巧妙的方法来避免这种情况,无论是使用外部调用、delegatecall还是其他方法,因此:

function thiss()
{
owner = 0x0...;
throw; //gives error, no changes whatsoever - what I want is to see changes and then "throw"...
}

一种方法是使用
事件
。您可以发出一个事件,然后返回函数。您可以通过查看交易凭证中的
日志
字段了解错误

事件错误日志(字符串消息);
函数this()公共{
所有者=0x583031D1113AD414F02576BD6AFABF302140225;
发出错误日志(“此函数中的错误”);
返回;
}

一种方法是使用
事件。您可以发出一个事件,然后返回函数。您可以通过查看交易凭证中的
日志
字段了解错误

事件错误日志(字符串消息);
函数this()公共{
所有者=0x583031D1113AD414F02576BD6AFABF302140225;
发出错误日志(“此函数中的错误”);
返回;
}

有趣,但事件可以执行代码吗?也就是说:除了简单的日志记录之外,还做什么?谢谢,这很有趣,我承认我对事件的理解在可靠性方面是最有限的。有趣,但事件能执行代码吗?也就是说:除了简单的日志记录之外,还做什么?谢谢,这很有意思,我承认我对事件的理解是最有限的。