問題一覧に戻る
中級エラー処理
問題44: カスタムエラー
Solidityのカスタムエラー(0.8.4以降)を学習します - 文字列メッセージ付きrequire文のガス効率的な代替手段です。カスタムエラーはイベントのように定義されますがerrorキーワードを使用します。失敗に関するコンテキストを提供するパラメータを含めることができます。カスタムエラーは文字列リバートメッセージと比較して大幅なガスを節約し、本番コントラクトに最適です。構造化されたエラーデータでデバッグを改善します。カスタムエラーの理解はガス最適化されたコントラクトの構築と現代のDeFiプロトコルでのより良いエラー処理の提供に重要です。
pragma solidity ^0.8.4;
contract CustomErrors {
// カスタムエラーの定義
Unauthorized();
InsufficientBalance(uint256 requested, uint256 available);
uint256 public balance = 100;
// カスタムエラーでrevert
function withdraw(uint256 amount) public {
if (amount > balance) {
InsufficientBalance(amount, balance);
}
balance -= amount;
}
}