[Solidity] error handler (require, assert, revert)
Web3/SoliditySolidity의 에러 핸들러에는 require, assert, revert 세가지가 있습니다
각각 어떤 경우에 사용하는지, 어떻게 사용하는지 알아보겠습니다
require
require는 특정 조건이 참이 아니라면 에러 메시지를 발생하고 실행을 멈춥니다
require로 에러를 발생시키면 사용하려던 gas를 환불 시켜 줍니다
주로 사용자 사용자의 입력을 확인하는데 사용합니다
사용방법은 다음과 같습니다
require(msg.value % 2 == 0, "Even value required.");
assert
assert는 특정 조건이 참이 아니라면 에러를 발생시켜 실행을 멈춥니다
assert는 gas를 환불 시켜 주지 않습니다
주로 내부적 코드결함이 있는지 확인하는데 사용합니다
(오버플로우나 언더플로우 등 치명적인 문제를 찾을 때 사용)
사용방법은 다음과 같습니다
assert(address(this).balance == balanceBeforeTransfer - msg.value / 2);
revert
revert는 조건없이 에러를 발생시킬 때 사용합니다
require와 마찬가지로 에러를 발생시키면 사용하려던 gas를 환불 시켜 줍니다
사용방법은 다음과 같습니다
revert("Not enough Ether provided.");
revert를 사용하려면 어쨋든 특정 조건문 안에 넣어야 하는데, 이는 require로 대체가 되기 때문에
주로 require가 사용되고 revert는 잘 사용되지 않습니다
'Web3 > Solidity' 카테고리의 다른 글
[Solidity] 함수제어자 modifier (0) | 2022.11.13 |
---|---|
[Solidity] 상속, 다중상속, 함수 오버라이드(override) (0) | 2022.11.10 |
[Solidity] view, pure 함수 (0) | 2022.11.06 |
[Solidity] 접근 제어자 (public, private, internal, external) (0) | 2022.11.05 |