Solidity menggunakan cara state-reverting exceptions untuk menangani error. Dimana exception akan membatalkan perubahan yang terjadi pada state dan mengirimkan error pada caller.
Berikut beberapa fungsi untuk menangani error
- assert() : digunakan hanya untuk memeriksa internal errors atau memeriksa invariants.
- require(): digunakan untuk memastikan suatu kondisi valid. Seperti input, syarat contract state variable, atau untuk mevalidasi return value dari external contracts.
- revert(): digunakan untuk menangkap error dan revert current call. Dapat menambahkan message yang berisi detail error, untuk dikembalikan ke caller.
- throw(): sama dengan revert. Deprecated.
Code yang baik tidak akan pernah mencapai assert statement, jika terjadi, maka ada bug dalam program.
Berikut contoh penggunaan require
string name;
function setName(string _name)
public
{
require(name.length>0);
name = _name;
}