Solidity
如何處理除以零的堅固性?
在流行的程式語言中,除以零會導致拋出異常,例如
ZeroDivisionError
在 python 中。Solidity 是否允許這樣的異常處理?如果是這樣,我將如何處理除以零?
除以零是一個例外,會導致交易恢復。
function foo(uint num, uint den) public pure returns(uint result) { if(den == 0) return 0; // there is no "correct" result, so decide what to do result = num / den; }
除法還有其他細微之處——沒有浮點數、精度、截斷——將這些放在一邊以堅持最初的問題。
通常,除以零是邏輯錯誤或輸入錯誤,因此恢復交易是正確的做法。由於預設消息對於大多數使用者,甚至可能是開發人員來說都是神秘且毫無意義的,因此您可以在仍然拒絕交易的同時提出更具資訊性的消息:
function foo(uint num, uint den) public pure returns(uint result) { require(den != 0, "denominator cannot be zero")l result = num / den; }
希望能幫助到你。