Lewati ke konten utama

Custom Error

Sejak Solidity 0.8.4, kamu bisa mendefinisikan custom error. Custom error lebih hemat gas dibanding require dengan string pesan karena tidak menyimpan string di bytecode.

// Definisi custom error (di level kontrak, bukan di dalam fungsi)
error ZeroAmount();
error InsufficientShares(uint256 requested, uint256 available);
error ZeroSharesMinted();

Untuk memicunya, gunakan revert:

if (amount == 0) revert ZeroAmount();

if (sharesToBurn > shares[msg.sender])
revert InsufficientShares(sharesToBurn, shares[msg.sender]);

Keuntungan Custom Error

Keuntungan custom error dibanding require(condition, "string message"):

  • Lebih hemat gas karena tidak menyimpan string.
  • Bisa menyertakan parameter untuk memberikan konteks lebih kaya.
  • Lebih mudah di-decode oleh frontend dan tools seperti Etherscan.