logging:使用try finally块来记录方法的开始和结束是否可以接受?

时间:2013-02-06 14:42:14

标签: c# java logging

考虑需要记录具有大量return语句的方法的情况, 而不是做,

    if(condition1)
    {
      calculation here
      do log
      return a
    }
    else if(condition2)
    {
      calculation here
      do log
      return b
    }
    else 
    {
      calculation here
      do log
      return c
    }                

如果日志语句相同,以这种方式记录会更好吗?

try
{
    if(condition1)
    {
      calculation here
      return a
    }
    else if(condition2)
    {
      calculation here
      return b
    }
    else 
    {
      calculation here
      return c
    }                
}
finally
{
    do log
}

如果我们创建一个try finally块来记录日志会有什么影响吗?什么是最佳做法?

3 个答案:

答案 0 :(得分:2)

为什么不像这样只返回

var returnValue
if(condition1)
{
  calculation here
  returnValue = a
}
else if(condition2)
{
  calculation here
  returnValue = b
}
else 
{
  calculation here
  returnValue = c
}         
do log
return returnValue

答案 1 :(得分:0)

要成为一个纯粹主义者,我会说将业务逻辑与错误处理混合起来总是不好的做法。此外,由于这是象牙塔的视图,因此将横切关注点(日志记录)与业务逻辑混合也是一种不好的做法。

我的目标是......

if(condition1)
    {
      calculation here
       result = a
    }
    else if(condition2)
    {
      calculation here
      result = b
    }
    else 
    {
      calculation here
      result = c
    }      
    log stuff
    return result          

答案 2 :(得分:-1)

它被认为是具有多个返回语句的坏风格 - >很难看到程序流程。 (这种小方法确实不是问题,但会降低可读性)

所以考虑在计算块中设置一个returnValue,它将在最后返回。

这允许您在返回之前的某个点进行记录。