首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在多种方法中很好地使用try catch?

如何在多种方法中很好地使用try catch?
EN

Stack Overflow用户
提问于 2014-05-02 15:32:39
回答 2查看 1.3K关注 0票数 4

如果我的问题很愚蠢,我很抱歉,但我有这样的代码:

代码语言:javascript
复制
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;
}

我想你看到了其中的规律。在这个try catch中只有一个try catch并传递一个泛型方法,有没有一个好的方法?

我本能地会使用委托,但委托必须有相同的签名,对吗?

提前谢谢。

致以问候。

EN

回答 2

Stack Overflow用户

发布于 2014-05-02 15:42:16

每当您看到这样的代码时,都可以应用Template Method Pattern

可能是这样的:

代码语言:javascript
复制
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);
}

以此类推。

票数 9
EN

Stack Overflow用户

发布于 2014-05-02 16:07:36

这可能对你有用。

代码语言:javascript
复制
public object BaseMethod(object[] userParameters,String FunctionName)
{
  try
   {    
          Type thisType = this.GetType();
          MethodInfo theMethod = thisType.GetMethod(FunctionName);
          object returnObj;
          returnObj = theMethod.Invoke(this, userParameters);
          return returnObj;
   }
   catch (Exception e)
   {
            this.Logger(e.InnerException);

    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23423043

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档