Try/Catch 块过多

public Customer GetCustomer(string customerId)
{
try
{
var command = new SqlCommand();
var reader = command.ExecuteReader();
var customer = new Customer();
while(reader)
{
customer.customerId=customerId;
customer.CustomerName=reader["CustomerName"].ToString();
customer.CustomerStatus=reader["CustomerStatus"].ToString();
customer.LoyaltyProgram=reader["CustomerLoyaltyProgram"].ToString();
}
return customer;
}
catch(Exception ex)
{
_logger.LogException(ex);
var customer=new Customer{CustomerStatus="nuknown"};
return customer;
}

将每个代码块中的这些方法析取到外部方法

private static Customer GetCustomerFromDataStore(string customerId)
{
var command = new SqlCommand();
var reader = command.ExecuteReader();
var customer = new Customer();
while(reader)
{
customer.customerId=customerId;
customer.CustomerName=reader["CustomerName"].ToString();
customer.CustomerStatus=reader["CustomerStatus"].ToString();
customer.LoyaltyProgram=reader["CustomerLoyaltyProgram"].ToString();
}
return customer;
}
private Customer HandleDataStoreExceptionWhenRetrievingCustomer(Exception ex)
{
_logger.LogException(ex);
var customer=new Customer{CustomerStatus="nuknown"};
return customer;
}

重构结果:

public Customer GetCustomer(string customerId)
{
try
{
return GetCustomerFromDataStore(customerId);
}
catch(Exception ex)
{
return HandleDataStoreExceptionWhenRetrievingCustomer(ex);
}
}

最新文章

  1. [C++11][数据结构]自己的双链表实现
  2. PHP正则表达式 /i, /is, /s, /isU等
  3. UNITY 2D入门基础教程
  4. 单片机C语言探究--为什么变量最好要赋初值
  5. AC自动机题目汇总
  6. 利用opencv3中的kmeans实现抠图功能
  7. JAVA命令大全
  8. [转]sql语句中出现笛卡尔乘积 SQL查询入门篇
  9. PhoneGap 安装体验
  10. Connection 和Dispose的学习日志
  11. 修改IE8搜索框为指定搜索引擎,如CSDN、百度知道等
  12. android:TextAppearance.Material.Widget.Button.Inverse问题
  13. 自己定义flash的宽和高
  14. 开始MVC5之旅
  15. 2929: [Poi1999]洞穴攀行
  16. JMeter接口测试系列-关联参数
  17. 解决@ResponseBody注解返回的json中文乱码问题
  18. C#中转换函数Convert、Parse、TryParse、(int) 的区别
  19. 51Nod1362 搬箱子 排列组合,中国剩余定理
  20. 使用Mongoose类库实现简单的增删改查

热门文章

  1. Vivado HLS与System Generator:联系与区别
  2. JQuery插件开发 - 模板
  3. WCF 服务的ABC之契约(七)
  4. js Table冻结表头示例代码
  5. SpringUtil
  6. Android 中的WiFi剖析
  7. vc2005 编译ACE-6.2.0
  8. 0x02全局变量和局部变量
  9. 【转载】IE6 PNG透明终极解决方案(打造W3Cfuns-IE6PNG最强帖)
  10. C++中的虚函数(类的向上转换,和向下转换)