Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to use try catch nicely in multiple methods?

Tags:

c#

.net

try-catch

Sorry if my question is stupid, but I have this kind of code :

public Object1 Method1(Object2 parameter)
{
    try
    {
        return this.linkToMyServer.Method1(parameter);
    }
    catch (Exception e)
    {
        this.Logger(e);
    }

    return null;
}

public Object3 Method2(Object4 parameter)
{
    try
    {
        return this.linkToMyServer.Method2(parameter);
    }
    catch (Exception e)
    {
        this.Logger(e);
    }

    return null;
}

/* ... */

public ObjectXX Method50(ObjectXY parameter)
{
    try
    {
        return this.linkToMyServer.Method50(parameter);
    }
    catch (Exception e)
    {
        this.Logger(e);
    }

    return null;
}

I think you see the pattern. Is there a nice way to have only one try catch and to pass a generic method in this try catch ?

Instinctively I'd use a delegate, but delegates have to have the same signature right ?

Thanks in advance.

Regards.

like image 362
Apollidore Avatar asked Dec 26 '22 09:12

Apollidore


1 Answers

Whenever you see code like this you can apply Template Method Pattern.

May be something like this:

private TResult ExecuteWithExceptionHandling<TParam, TResult>(TParam parameter, Func<TParam, TResult> func)
{
    try
    {
        return func(parameter);
    }
    catch (Exception e)
    {
        this.Logger(e);
    }
    return default(TResult);
}

public Object1 Method1(Object2 parameter)
{
    return ExecuteWithExceptionHandling(parameter, linkToMyServer.Method1);
}

public Object3 Method2(Object4 parameter)
{
    return ExecuteWithExceptionHandling(parameter, linkToMyServer.Method2);
}

And so on...

like image 134
Sriram Sakthivel Avatar answered Jan 06 '23 09:01

Sriram Sakthivel