Error
錯誤時將 msg.value 傳回給呼叫者
我在契約中有一個帶有修飾符“應付”的功能。我的理解是, msg.value 被添加到合約的餘額中,然後執行進一步的程式碼。第一個問題,這是正確的理解嗎?第二個問題,如果出現錯誤,我如何將 msg.value 發回給呼叫者,我可以考慮這樣做,
if(<check for error case>){ msg.sender.send(msg.value) }
或者有沒有辦法使用’require’?
發出錯誤信號並返回使用者函式的正確方法是使用
revert
、assert
或require
操作。所有這些都將退還交易中發送的任何資金。例如,您的程式碼可能看起來像assert(!error);
或者
require(conditions, "Error message");
或者
if(error) revert("Error message");
請注意,
require
並將revert
任何未使用的氣體返回給發送者,同時assert
消耗所有未使用的氣體。通常最好使用require
.