Run*_*une 5 logging exception-handling exception
public void EatDinner(string appetizer, string mainCourse, string dessert)
{
try
{
// Code
}
catch (Exception ex)
{
Logger.Log("Error in EatDinner", ex);
return;
}
}
Run Code Online (Sandbox Code Playgroud)
当特定方法发生异常时,我应该记录什么?
我在使用的代码中看到了很多以上内容.在这些情况下,我总是要与遇到错误的人交谈,找出他们在做什么,逐步完成代码,并尝试重现错误.
是否有最佳实践或方法可以最大限度地减少所有这些额外的工作?我应该像这样在每个方法中记录参数吗?
Logger.Log("Params: " + appetizer + "," + mainCourse + "," + dessert, ex);
Run Code Online (Sandbox Code Playgroud)
是否有更好的方法来记录当前环境?如果我这样做,我是否需要为我的应用程序中的每个方法写出所有这些内容?有关此类情景的最佳做法吗?
作为一般规则,我会说要努力记录重现导致错误的事件过程所需的所有信息.请注意,您不一定需要记录catch块中的所有内容:您可以在代码中调用(调试)日志语句,在调用等方法中,这使您可以在异常之前直接跟踪正在进行的操作.此外,您应该将信息放入异常本身,以确定导致它的确切症状.
恕我直言通过所有代码在任何地方添加日志声明可能是过度的 - 或者至少,在现实生活中没有成本效益.相反,请关注最关键的代码部分,以最大限度地提高您的工作回报.这些代码部分通常是发生大多数错误和/或(将要)完成大部分修改的地方.所以在实践中,每当你需要触摸一段代码时,考虑记录,检查那里已经存在的日志语句(如果有的话),检查异常处理(如果有的话) - 我通常不仅看到像你的例子那样的代码简单地吞下捕获的异常,但是catch我们的遗留代码中甚至是空的或自动生成的块......所有这些都可能使应用程序处于未定义状态,这是一个不好的事情),并考虑一下已经存在的内容是否足以让你重现故障并了解发生错误时发生的情况.然后根据需要进行改进,并且可以合理的努力.
它还有助于与您的团队成员讨论这个主题,并尝试制定一个粗略的项目约定,如何记录事件,如何处理异常等.这可能会节省您花费大量时间来追逐错误和/或改进代码生成由你的同事:-(
| 归档时间: |
|
| 查看次数: |
541 次 |
| 最近记录: |