Exceptions
需要幫助理解文件中的共享者(異常)範例
好的,這是來自solidity docs的程式碼:
contract Sharer { function sendHalf(address addr) returns (uint balance) { if (!addr.send(msg.value / 2)) throw; // also reverts the transfer to Sharer return this.balance; } }
我對這個例子的問題是評論:
// 也將傳輸還原到共享器
這很令人困惑,因為
throw
在我的理解中將轉移恢復到msg.sender和 Sharer 契約不是這裡的msg.sender。我在這裡想念什麼?如果將程式碼更改為以下內容,會不會更容易混淆:
contract Sharer { function sendHalf(address addr) returns (uint balance) { if (!addr.send(msg.value / 2)) // if false reverts the transfer to Sharer throw; // reverts the transfer to msg.sender return this.balance; } }
這裡的“reverts”是指“取消”而不是“返還資金”。
因此,發件人進行交易,將資金發送到合約,並指定一個地址來拆分它們。這是“轉移到共享者”交易(我稱之為 TTST)。合約嘗試將資金發送到指定地址。如果失敗,則恢復 TTST,將資金返還給發送者。