Solidity-error-handling
提供:Dev Guides
堅牢性-エラー処理
Solidityは、エラー処理のためのさまざまな機能を提供します。 通常、エラーが発生すると、状態は元の状態に戻ります。 その他のチェックは、不正なコードアクセスを防止することです。 以下は、エラー処理で使用される重要な方法の一部です-
- * assert(bool condition)*-条件が満たされない場合、このメソッド呼び出しは無効なオペコードを引き起こし、状態に対して行われた変更は元に戻されます。 このメソッドは、内部エラーに使用されます。
- * require(bool condition)*-条件が満たされない場合、このメソッド呼び出しは元の状態に戻ります。 -このメソッドは、入力または外部コンポーネントのエラーに使用されます。
- * require(bool condition、string memory message)*-条件が満たされない場合、このメソッド呼び出しは元の状態に戻ります。 -このメソッドは、入力または外部コンポーネントのエラーに使用されます。 カスタムメッセージを提供するオプションを提供します。
- * revert()*-このメソッドは実行を中止し、状態に対して行われた変更を元に戻します。
- * revert(string memory reason)*-このメソッドは実行を中止し、状態に対して行われた変更を元に戻します。 カスタムメッセージを提供するオプションを提供します。
例
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.
}
}
revertが呼び出されると、次のように16進データが返されます。
出力
0x08c379a0 //Function selector for Error(string)
0x0000000000000000000000000000000000000000000000000000000000000020//Data offset
0x000000000000000000000000000000000000000000000000000000000000001a//String length
0x4e6f7420656e6f7567682045746865722070726f76696465642e000000000000//String data