Crypto Flexs
  • DIRECTORY
  • CRYPTO
    • ETHEREUM
    • BITCOIN
    • ALTCOIN
  • BLOCKCHAIN
  • EXCHANGE
  • TRADING
  • SUBMIT
Crypto Flexs
  • DIRECTORY
  • CRYPTO
    • ETHEREUM
    • BITCOIN
    • ALTCOIN
  • BLOCKCHAIN
  • EXCHANGE
  • TRADING
  • SUBMIT
Crypto Flexs
Home»ETHEREUM NEWS»Solidity 0.6.x feature: try/catch statement
ETHEREUM NEWS

Solidity 0.6.x feature: try/catch statement

By Crypto FlexsFebruary 13, 20244 Mins Read
Facebook Twitter Pinterest LinkedIn Tumblr Email
Solidity 0.6.x feature: try/catch statement
Share
Facebook Twitter LinkedIn Pinterest Email

that much try/catch syntax introduced in 0.6.0 This is arguably the biggest leap forward in Solidity’s error handling capabilities. going back and need Released in v0.4.22. both try hard and Catch This is a reserved keyword From v0.5.9 You can now use this to handle errors. Out Calling a function without rolling back the entire transaction (state changes in the called function will still be rolled back, but state changes in the calling function will not)

We are moving one step further from the purist “all or nothing” approach to the transaction lifecycle. This falls short of the actual behavior we often want.

External call failure handling

Try/catch statements allow you to react to failure. Out With a phone Create contract I can’t use it because I’m making a phone call. interior Function call. If you want to wrap a public function call within the same contract using try/catch, you can make it external by calling the function with: this..

The example below shows how try/catch is used in the factory pattern where contract creation may fail. as follows charity dispenser The contract requires the required address attribute. _owner In the constructor.

pragma solidity ^0.6.1;

contract CharitySplitter 
    address public owner;
    constructor (address _owner) public 
        require(_owner != address(0), "no-owner-provided");
        owner = _owner;
    

There is a factory contract — charity division factory Used to create and manage instances. charity dispenser. From factory we can pack New CharitySplitter (charityOwner) Used in try/catch as a failsafe for cases where an empty value may cause the constructor to fail. charity owner It’s being passed.

pragma solidity ^0.6.1;
import "./CharitySplitter.sol";
contract CharitySplitterFactory 
    mapping (address => CharitySplitter) public charitySplitters;
    uint public errorCount;
    event ErrorHandled(string reason);
    event ErrorNotHandled(bytes reason);
    function createCharitySplitter(address charityOwner) public 
        try new CharitySplitter(charityOwner)
            returns (CharitySplitter newCharitySplitter)
        
            charitySplitters(msg.sender) = newCharitySplitter;
         catch 
            errorCount++;
        
    

With try/catch, only exceptions that occur within the external call itself are caught. For example, errors inside expressions are not caught. New CharitySplitter Since it is itself part of the internal call, any errors that occur will not be caught. The sample demonstrating this behavior has been modified. createCharitySplitter function. here charity dispenser Constructor input parameters are retrieved dynamically from other functions. getCharityOwner. If that function reverts, in this example “Revert needed for testing”This is not caught in the try/catch statement.

function createCharitySplitter(address _charityOwner) public 
    try new CharitySplitter(getCharityOwner(_charityOwner, false))
        returns (CharitySplitter newCharitySplitter)
    
        charitySplitters(msg.sender) = newCharitySplitter;
     catch (bytes memory reason) 
        ...
    

function getCharityOwner(address _charityOwner, bool _toPass)
        internal returns (address) 
    require(_toPass, "revert-required-for-testing");
    return _charityOwner;

Search for error messages

You can extend the try/catch logic further: createCharitySplitter A function to retrieve the error message if a failure resulted in an error message. going back or need Exported as event. There are two ways to achieve this:

1. Use Catching errors (string memory reasons)

function createCharitySplitter(address _charityOwner) public 
    try new CharitySplitter(_charityOwner) returns (CharitySplitter newCharitySplitter)
    
        charitySplitters(msg.sender) = newCharitySplitter;
    
    catch Error(string memory reason)
    
        errorCount++;
        CharitySplitter newCharitySplitter = new
            CharitySplitter(msg.sender);
        charitySplitters(msg.sender) = newCharitySplitter;
        // Emitting the error in event
        emit ErrorHandled(reason);
    
    catch
    
        errorCount++;
    

An error occurs when the following event occurs in a failed constructor:

CharitySplitterFactory.ErrorHandled(
    reason: 'no-owner-provided' (type: string)
)

2. Use catch(bytememoryreason)

function createCharitySplitter(address charityOwner) public 
    try new CharitySplitter(charityOwner)
        returns (CharitySplitter newCharitySplitter)
    
        charitySplitters(msg.sender) = newCharitySplitter;
    
    catch (bytes memory reason) 
        errorCount++;
        emit ErrorNotHandled(reason);
    

An error occurs when the following event occurs in a failed constructor:

CharitySplitterFactory.ErrorNotHandled(
  reason: hex'08c379a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000116e6f2d6f776e65722d70726f7669646564000000000000000000000000000000' (type: bytes)

The above two methods of searching for error strings produce similar results. The difference is that the second method does not ABI decode the error string. The advantage of the second method is that it runs even if ABI decoding fails on an error string or no reason is provided.

Future Plans

There are plans to release support for this error type. This means that you will be able to catch many different types of errors by declaring them in a similar way to events. For example:

catch CustomErrorA(uint data1)  … 
catch CustomErrorB(uint() memory data2)  … 
catch 
Share. Facebook Twitter Pinterest LinkedIn Tumblr Email

Related Posts

Mixed signals for Ethereum: Technical milestones and growing adoption offset market pressure

January 6, 2026

A popular cryptocurrency founder has poured millions of dollars into Ethereum, and here’s what he’s buying:

January 2, 2026

Ethereum’s 2026 roadmap includes more validator risk than you might think.

December 29, 2025
Add A Comment

Comments are closed.

Recent Posts

Impact of ECC team withdrawal on Zcash (ZEC)

January 8, 2026

Binance and Coinbase Suddenly Add Support for New ZK Proof Altcoins

January 8, 2026

BitMEX Launches Equity Perps for 24/7 Stock Trading

January 8, 2026

Bitcoin price plummets to $90,000 as New Year bounce falters

January 7, 2026

Wake Arena: The AI-Driven Audit Service

January 7, 2026

7 Best DeFi Dashboards for 2026 (DeFi Portfolio Tracking)

January 7, 2026

When You Look Into The Transition To New Crypto-based Projects

January 7, 2026

How To Choose The App For Crypto Trading In Bitcoin And Trade Safely

January 7, 2026

How UK Financial Ltd’s ERC-3643 token is shaping the future of regulated cryptocurrency trading.

January 7, 2026

Barclays Invests In Ubyx To Advance Digital Money Connectivity

January 7, 2026

Cango Inc. Announces December 2025 Bitcoin Production And Mining Operations Update

January 7, 2026

Crypto Flexs is a Professional Cryptocurrency News Platform. Here we will provide you only interesting content, which you will like very much. We’re dedicated to providing you the best of Cryptocurrency. We hope you enjoy our Cryptocurrency News as much as we enjoy offering them to you.

Contact Us : Partner(@)Cryptoflexs.com

Top Insights

Impact of ECC team withdrawal on Zcash (ZEC)

January 8, 2026

Binance and Coinbase Suddenly Add Support for New ZK Proof Altcoins

January 8, 2026

BitMEX Launches Equity Perps for 24/7 Stock Trading

January 8, 2026
Most Popular

ROBINHOOD to be presented at Citizens JMP Technology Conference

February 26, 2025

New addresses surge as Bitcoin price falls

July 9, 2024

Bitcoin’s ‘fair value’ can be as high as $ 230k, and Bitwise Analysts predicts.

June 10, 2025
  • Home
  • About Us
  • Contact Us
  • Disclaimer
  • Privacy Policy
  • Terms and Conditions
© 2026 Crypto Flexs

Type above and press Enter to search. Press Esc to cancel.