public void EatDinner(string appetizer, string mainCourse, string dessert)
{
try
{
// Code
}
catch (Exception ex)
{
Logger.Log("Error in EatDinner", ex);
return;
}
}
当特定方法发生异常时,我应该记录什么?
我在我使用的代码中看到了很多上述内容。在这些情况下,我总是必须与遇到错误的人交谈,以了解他们在做什么,单步执行代码,并尝试重现错误。
是否有任何最佳实践或方法可以最大限度地减少所有这些额外工作?我应该像这样记录每个方法中的参数吗?
Logger.Log("Params: " + appetizer + "," + mainCourse + "," + dessert, ex);
有没有更好的方法来记录当前环境?如果我这样做,我是否需要为应用程序中的每个方法写出所有这些内容?是否有针对此类场景的最佳实践?
作为一般规则,我会说努力记录重现导致错误的事件过程所需的所有信息。请注意,您不一定需要记录其中的所有内容catch
块:您可以在代码中、调用的方法等中放置(调试)日志语句,这使您能够跟踪异常之前发生的情况。另外,您应该将有关导致异常的确切症状的信息放入异常本身中。
恕我直言,遍历所有代码来在各处添加日志语句可能有点矫枉过正,或者至少在现实项目中不具有成本效益。反而,专注于最关键的代码部分使您的努力获得最大回报。这些代码部分通常是发生最多错误和/或(将)进行最多修改的地方。因此,在实践中,每当您需要接触一段代码时,请考虑日志记录,检查那里已经存在的日志语句(如果有的话),检查异常处理(如果有的话 - 我经常看到的不仅是像您的示例这样的代码只是吞掉捕获的异常,但甚至是空的或自动生成的catch
我们的遗留代码中的块...所有这些都可能使应用程序处于未定义状态,这是一件坏事),并考虑现有的内容是否足以让您重现故障并了解发生错误时发生的情况。然后通过合理的努力,尽可能地改进它。
与您的队友讨论这个话题并尝试制定一个粗略的项目公约如何记录事件、如何处理异常等。这可能会为您节省大量时间,否则您将花费在追查错误和/或改进同事生成的代码上:-(
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)