Concise C# Part 2 : Try Catch and reusability

Exception handling is an important part of any software. In this post, I will talk about a trick to make but some kind of reusability on exception handling.

This post is part of a serie about making C# code shorter

When you write code, you usually try to reuse your code by creating methods and calling those methods each time you the need their functionality. When working with exceptions, it’s a bit tricky because, they don’t follow the normal code flow, they jump out of your method … unless you catch them. The consequence is that you usually have multiple similar try {} catch {} blocks that are often copied and pasted.

This is what usually happens

public void Method1()
{
    try
    {
        //method 1 content
    }
    catch (ThreadAbortException)
    {
    }
    catch (IOException ex)
    {
        //IO exception handling
    }
    finally
    {
        //add any code for releasing ressource
    }
}

public void Method2()
{
    try
    {
        //method 2 content
    }
    catch (ThreadAbortException)
    {
    }
    catch (IOException ex)
    {
        //IO exception handling
    }
    finally
    {
        //add any code for releasing ressource
    }
}

The solution to reuse the exception block

This is what you could do to reuse the same error handling code block in c# :

public void Method1()
{
    Do(() =>
    {
        //method 1 content
    });
}

public void Method2()
{
    Do(() =>
    {
        //method 2 content
    });
}

protected void Do(Action method)
{
    try
    {
        //code to call before each methods
        method();
        //code to call after each methods success
    }
    catch (ThreadAbortException)
    {
    }
    catch (IOException ex)
    {
        //IO exception handling
    }
    finally
    {
        //add any code for releasing ressource
    }
}

Leave a Reply

Your email address will not be published. Required fields are marked *