차밍이
[Solidity] 기본 문법 (2) - Error Handler - require, revert, assert, try-catch 본문
블록체인/Solidity
[Solidity] 기본 문법 (2) - Error Handler - require, revert, assert, try-catch
2022. 1. 25. 23:18반응형
Errer Handler
종류는 네 가지가 있음
require, revert, assert, try/catch
assert : gas를 다 소비한 후, 특정 조건이 부합하지 않으면 (false일 때) 에러를 발생시킨다.
revert : 조건 없이 에러를 발생시키고, gas를 환불시켜준다.
require : 특정한 조건에 부합하지 않으면 (false일 때) 에러를 발생시키고, gas를 환불시켜준다.
contract testContract {
function assertNow() public pure {
assert(false); // test용으로 사용함
}
// 비용이 절감됨, 실제 coding 할 때 revert와 require을 씀
function revertNow() public pure {
revert("error"); // if 문을 쓰거나 require를 씀
}
function requireNow() public pure {
require(false, 'occered');
}
}
revert vs require
contract testContract {
function onlyAdults(uint256 _age) public pure return (string memory) {
if(_age<19) {
revert("you are not allowed");
}
}
function onlyAdults2(uint256 _age) public pure return(string memory) {
require(_age>19, "you are not allowed");
return "Your payment is succeeded";
}
}
assert
assert는 오직 내부적 에러 테스트 용도이며
불변성 체크 용도로 사용된다.
0.8.1 이상 버전에서 사용하면 가스를 환불받을 수 있음
solidity errors
try / catch
0.6 버전 이후에서 사용 가능
try - catch
는 에러를 발생시키고 프로그램을 종료시키지 않음
catch
문 안에서 발생된 에러는 잡지 못 함
catch의 3가지 종류
- catch Error - revert나 require을 통해서 생성된 에러 용도
- catch Panic - assert를 통해 생성된 에러가 날 때, catch에 의해 잡힘
- catch - row level 영역에서 사용됨
try - catch는 외부 스마트 컨트랙을 함수로 부를 때 , 사용하기 위해 사용됨
Reference
인프런 강의 보면서 공부한 내용을 정리함
반응형
'블록체인 > Solidity' 카테고리의 다른 글
[Solidity] 기본 문법 (1) - event, super, mapping 예시 (0) | 2022.01.24 |
---|
관련된 글 보기
Comments