2014-07-25 24 views
1

我在try/catch中使用System.Diagnostics.Trace#TraceError来跟踪错误。通过查看TraceError的实现,看起来来自听众的错误没有被真正捕获。这是否意味着我应该写这样的代码下面,以避免登录传播到主叫方的错误:我是否需要在try/catch中包装Trace.TraceError?

catch (Exception e) { 
    try { 
     Trace.TraceError(e); 
    } catch { 
     // Do nothing 
    } 
} 

回答

3

Trace.TraceError未记录抛出异常,因此无需catch它。即使如果它被记录为抛出异常,你也绝不应该是一个例外,并且什么都不做。

让异常升起,只有这样你才有机会找到问题所在。

Why is try {...} finally {...} good; try {...} catch{} bad?

+0

'你不应该捕捉异常,做nothing' - 我不同意高。如果冒出异常没有价值,为什么要泡它?如果您的日志子系统由于某种原因失败,您是否应该崩溃整个应用程序?你应该提醒用户吗?最有可能不是!在这种情况下抑制异常,并让应用程序继续执行其工作。 –

+1

@PhilipPittle来吧。一般建议要注意。这就是我将相关问题联系起来的原因。正如你所说,规则可以根据场景进行更改:) btw为什么抑制错误?我宁愿修复它在代码中,如果它可以做到。 –

+0

永远不要说永远:)。我同意最佳做法是对这个例外做些事情。但这并不是每个案件都需要的。 –

相关问题