43: Try and Catch

In Solidity try and catch can be used to handle exceptions. This can prevent a transaction from failing due to an invalid input or a bug in the code.

  • Example 1 In the following example, we want to prevent someone from sending more than 5 ether in a single transaction.

function sendMoney(address _to, uint256 _amount) public payable {    
    try {        
        require(_amount <= 5 ether);        
        _to.transfer(_amount);    
    } 
    catch (bytes32 err) {        
        revert("Only 5 ether can be sent at a time");    
    }
}

In this example, if the _amount is greater than 5 ether, the require statement will throw an exception and the catch block will handle the exception, reverting the transaction and sending a message to the sender.

  • Example 2 In this example, we want to ensure that the sender and receiver are not the same address.

function sendMoney(address _to, uint256 _amount) public payable {    
    try {        
        require(_to != msg.sender);        
        _to.transfer(_amount);    
    } 
    catch (bytes32 err) {        
        revert("Sender and receiver cannot be the same address");    
    }
}

If the sender and receiver are the same address, the require statement will throw an exception and the catch block will handle the exception, reverting the transaction and sending a message to the sender.

That's it for the lesson 43! In the next lesson, Library

Last updated