Solidity - Penanganan Error
Solidity menyediakan berbagai fungsi untuk penanganan error. Umumnya ketika terjadi kesalahan, keadaan dikembalikan ke keadaan semula. Pemeriksaan lainnya untuk mencegah akses kode yang tidak sah. Berikut adalah beberapa metode penting yang digunakan dalam penanganan kesalahan -
assert(bool condition)- Jika kondisi tidak terpenuhi, panggilan metode ini menyebabkan opcode tidak valid dan setiap perubahan yang dilakukan pada status dikembalikan. Metode ini akan digunakan untuk kesalahan internal.
require(bool condition)- Jika kondisi tidak terpenuhi, panggilan metode ini kembali ke keadaan semula. - Metode ini digunakan untuk kesalahan dalam input atau komponen eksternal.
require(bool condition, string memory message)- Jika kondisi tidak terpenuhi, panggilan metode ini kembali ke keadaan semula. - Metode ini digunakan untuk kesalahan dalam input atau komponen eksternal. Ini memberikan opsi untuk memberikan pesan khusus.
revert() - Metode ini membatalkan eksekusi dan mengembalikan setiap perubahan yang dilakukan pada status.
revert(string memory reason)- Metode ini membatalkan eksekusi dan mengembalikan semua perubahan yang dilakukan pada status. Ini memberikan opsi untuk memberikan pesan khusus.
Contoh
Coba kode berikut untuk memahami bagaimana penanganan kesalahan bekerja di Solidity.
pragma solidity ^0.5.0;
contract Vendor {
address public seller;
modifier onlySeller() {
require(
msg.sender == seller,
"Only seller can call this."
);
_;
}
function sell(uint amount) public payable onlySeller {
if (amount > msg.value / 2 ether)
revert("Not enough Ether provided.");
// Perform the sell operation.
}
}
Ketika dipanggil kembali, itu akan mengembalikan data heksadesimal sebagai berikut.
Keluaran
0x08c379a0 // Function selector for Error(string)
0x0000000000000000000000000000000000000000000000000000000000000020 // Data offset
0x000000000000000000000000000000000000000000000000000000000000001a // String length
0x4e6f7420656e6f7567682045746865722070726f76696465642e000000000000 // String data