Solidity

拋出後合約狀態變數變化

  • September 26, 2017

是否有可能更改狀態變數然後拋出錯誤,以便保持狀態。例如:

uint minAmount = 1 ether;
uint state;
function payDeposit() payable {
   if(msg.value < minAmount ) {
       state = 2;
       throw;
   }
   state = 1;
}

在上面的範例中,未設置狀態變數。有沒有辦法解決這個問題?

這是不可能的,因為throw確保呼叫沒有副作用,並且所有的氣體都被消耗掉了。

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