加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

如何避免异常捕获.NET中的复制粘贴

发布时间:2020-12-16 04:13:10 所属栏目:asp.Net 来源:网络整理
导读:使用.NET框架我有一个带有一组方法的服务,这些方法可以生成几种类型的异常:MyException2,MyExc1,Exception …为了为所有方法提供适当的工作,每个方法都包含以下部分: [WebMethod]void Method1(...){ try { ... required functionality } catch(MyException
使用.NET框架我有一个带有一组方法的服务,这些方法可以生成几种类型的异常:MyException2,MyExc1,Exception …为了为所有方法提供适当的工作,每个方法都包含以下部分:
[WebMethod]
void Method1(...)
{
    try
    {
        ... required functionality
    }
    catch(MyException2 exc)
    {
        ... process exception of MyException2 type
    }
    catch(MyExc1 exc)
    {
        ... process exception of MyExc1 type
    }
    catch(Exception exc)
    {
        ... process exception of Exception type
    }
    ... process and return result if necessary
}

在EACH服务方法中具有完全相同的东西(每个方法具有不同的参数集)与处理功能完全相同的异常是非常无聊的…

有没有可能“分组”这些捕获部分并只使用一行(类似于C宏)?可能.NET 4.0中的新内容与此主题有关吗?

谢谢.

附:欢迎任何想法.

解决方法

如果异常处理在所有方法中完全相同,您可以执行以下操作:
void CallService(Action method)
{
    try
    {
        // Execute method
        method();
    }
    catch(MyException2 exc)
    {
        ... process exception of MyException2 type
    }
    catch(MyExc1 exc)
    {   
        ... process exception of MyExc1 type
    }
    catch(Exception exc)
    {
        ... process exception of Exception type
    }
}

然后,您可以重写您的客户端代码:

int i = 3;
string arg = "Foo";
this.CallService( () => this.Method1(i) );
this.CallService( () => this.Method2(arg,5) );

这允许您的Method1和Method2方法简单:

void Method1(int arg)
{
    // Leave out exception handling here...
    ... required functionality  
    ... process and return result if necessary
}

void Method2(string stringArg,int intArg)
{
    // Leave out exception handling here...
    ... required functionality  
    ... process and return result if necessary
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读