提取Try / Catch块 - Microsoft约定/标准

时间:2015-12-16 00:16:04

标签: java coding-style standards conventions

我正在阅读罗伯特·C·马丁的“清洁代码”一书,他强烈建议“提取试验的主体,并将阻挡成为他们自己的功能”

这是书中的例子,要说清楚:

public void delete(Page page)
{
    try
    {
        deletePageAndAllReferences(page);
    }
    catch (Exception e)
    {
        logError(e);
    }
}

private void deletePageAndAllReferences(Page page) throws Exception {
    deletePage(page);    
    registry.deleteReference(page.name);           
    configKeys.deleteKey(page.name.makeKey());  
}

private void logError(Exception e) {    
    logger.log(e.getMessage());  
}

这样做的原因是:

  • try / catch块会混淆代码的结构,并将错误处理与正常处理混合
  • 良好的分离,使代码更易于理解和修改。

问题是,我已经在几个项目上工作了几年,而这从来就不是一个规则,即使在他们真正关心干净代码的环境中,我也没有找到跟随它的人。

所以我想知道: 这些书的例子都是基于Java的,我和C#/ .NET一起工作,有来自.NET社区的微软的任何标准或约定吗?

1 个答案:

答案 0 :(得分:2)

我能想到的一个原因是,如果catch块有多条线路。例如,如果您记录错误,发送通知电子邮件,并回滚数据库事务或其他内容。如果您开始向catch块添加其他内容,您将发现自己不得不重复代码。