Error

錯誤時將 msg.value 傳回給呼叫者

  • May 19, 2018

我在契約中有一個帶有修飾符“應付”的功能。我的理解是, msg.value 被添加到合約的餘額中,然後執行進一步的程式碼。第一個問題,這是正確的理解嗎?第二個問題,如果出現錯誤,我如何將 msg.value 發回給呼叫者,我可以考慮這樣做,

if(<check for error case>){
 msg.sender.send(msg.value)
}

或者有沒有辦法使用’require’?

發出錯誤信號並返回使用者函式的正確方法是使用revertassertrequire操作。所有這些都將退還交易中發送的任何資金。例如,您的程式碼可能看起來像

assert(!error);

或者

require(conditions, "Error message");

或者

if(error)
   revert("Error message");

請注意,require並將revert任何未使用的氣體返回給發送者,同時assert消耗所有未使用的氣體。通常最好使用require.

有關更多文件,請參閱http://solidity.readthedocs.io/en/v0.4.24/control-structures.html?highlight=revert#error-handling-assert-require-revert-and-exceptions

引用自:https://ethereum.stackexchange.com/questions/48901