Exceptions
當通過公共 getter 接收乙太幣時,需要樣式異常的範例是什麼?
在Solidity 文件中指出:
在以下情況下會生成 require 樣式的異常:
…
- 如果你的合約通過公共 getter 函式接收乙太幣。
…
有什麼例子,為什麼會引發異常?
讓我們考慮以下合約:
contract pubGetterException { uint public value; function pubGetterException(uint _value) public { value = _value; } }
無符號整數變數
value
有一個自動生成的公共 getter(您不必在契約中明確編寫它),因為它被聲明為public
.如果您查看 ABI,它看起來像這樣:
[ { "constant": true, "inputs": [], "name": "value", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "inputs": [ { "name": "_value", "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", "type": "constructor" } ]
在這裡,請注意自動生成的 getter 函式不是
payable
函式,即。它無法接收乙太幣,因此它會拋出一個需要樣式的異常,如 Solidity 文件中所述。