Solidity - 예외처리 관련된 함수

프동프동·2022년 6월 5일
0

솔리디티(Solidity)

목록 보기
6/20
post-thumbnail

예외처리 관련된 함수

asert(조건)

Smart Contract로 보내진 gas를 모두 소비하고 사용자에게 반환하지 않는다. 특정한 조건에 부합하지 않으면 에러를 발생시킨다. 정말 예상치 못한 일이 일어났을 경우만 사용되야한다.
사용자에게 알려주지 않고 트랜잭션을 그냥 종료시킨다.

내부 상태나 불변량 검사를 할 때는 assert를 사용한다.

require(조건, "Error Message")

조건에 부합하지 않으면 에러를 발생시키고 입력된 오류 문자열을 반환한다.
트랜잭션을 실행하지 않은 상태로 되돌린다.
gas를 사용자에게 반환한다.

입력 유효성 검사에는 require를 사용한다.

revert("Error Message")

조건 없이 에러를 발생시키고 gas를 사용자에게 반환한다. 주로 if문과 함께 사용한다.
require와 마찬가지로 트랜잭션을 되돌린다.

require()와 revert()는 취향 차이

require() vs revert()

ex) require()

require(amount <= msg.value / 2 ether,"Not enough Ether provided");

ex) revert()

if(amount > msg.value / 2 ether){
	revert("Not enough Ether provided.");
}

throw

고전적인 스타일로 이제는 사용되지 않는 함수

throw vs require()

ex) throw

if(msg.sender != owner) {
	throw;
}

ex) require

require(msg.sender == owner);
profile
좋은 개발자가 되고싶은

0개의 댓글