【Assert】
assert()
必須指被用來檢測內部錯誤,意思就是用來測試或 debug,並且用來檢測不變量(不該被改變的常數等)。
以下的例子是 num
這個變數必須只為 0
,在我們的預想之中它得是個常數不該被更改,所以為了確認我們沒有忽略它被改變的情況,這裡加上 assert()
在 num
被改變時使程式強制中止。
Asserted 會被觸發的情況及性質如下:
assert(X)
當X 之值為false
踩到了超出範圍的 index
除以0或取除以0之餘數(5/0 or 23%0)
位元移動運算(Byteshifting)時位移量為負
轉換負值或過大的數字成
enum
資料結構
Assert 和 Require的比較
當
require
面對Revert operation(0xfd) 時會送回剩餘的gas當
assert
面對Invalid operation(0xfe) 時會消耗全部的gasAssert 用於檢測完全不該在合約裡出現的情況
Require 用來檢測使用者的輸入等錯誤情況
Last updated