使用.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 }