using System.Linq.Expressions;
public static void Main()
var someParamFor2 = new object();
p.TryCatchWrapper1<int>(i.SomeMethod1, 42, p.Handle);
p.TryCatchWrapper2(() => i.SomeMethod2(someParamFor2));
public void Handle(Exception ex)
public void TryCatchWrapper1<TParam1>( Action<TParam1> action, TParam1 param1, Action<Exception> handleException)
public void TryCatchWrapper2( Expression<Action> expr )
var compiled = expr.Compile();
public interface ISomeInterface
void SomeMethod1( int someParam );
void SomeMethod2( object someParam );