发生异常时记录什么?

2024-04-24

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(使用前将#替换为@)

发生异常时记录什么? 的相关文章

  • Sentry django 配置 - 记录器

    我正在尝试使用简单的日志记录并希望将错误 异常发送到 Sentry 我按照文档配置了 Sentry 并在我的开发人员上成功运行了测试 python manage py raven test 我添加了日志记录配置 如下所示哨兵文档 https
  • 处理ORACLE异常

    我需要处理ORA 01400 错误 http www techonthenet com oracle errors ora01400 php 无法使用异常句柄将 NULL 插入 SCHEMA TABLE NAME COLUMN NAME O
  • Graylog2-如何将日志保留配置为 1 周

    我们正在使用一些 Graylog2 服务器 graylog server 版本 1 3 4 因为我们收到太多的日志消息 所以需要大量的内存 我正在尝试将日志保留时间减少到 1 周 所有超过 1 周的日志消息都将被删除 但是 我无法在配置文件
  • Python 记录到标准输出和日志文件

    我对 python 相当陌生 并开始进入日志记录模块 我希望将消息记录到日志文件中并输出到控制台 下面的代码将消息打印到控制台 但是如何将所有消息记录到文件中 Logger 对象没有用于记录到文件的函数调用 basicConfig file
  • DBI:在 eval 中引发错误

    这个问题参考了池上的评论 But if you re going to put an eval around every statement just use RaiseError gt 0 in this thread https sta
  • 不要在异常堆栈中显示 Python raise-line

    当我在 Python 库中引发自己的异常时 异常堆栈将引发行本身显示为堆栈的最后一项 这显然不是一个错误 在概念上是正确的 但是当您在外部使用代码 例如作为模块 时 它会将重点放在对调试无用的东西上 有没有办法避免这种情况并强制 Pytho
  • Spring - 捕获bean创建异常

    我想在我的代码中捕获 bean 实例化异常 我有什么选择 一种方法是使用基于 Java 的容器配置 Configuration public class AppConfig Bean public SomeBean someBean try
  • 位置 0 处没有行

    cmd CommandText select from product where prod code Trim txtprod code Text and branch w location and avail stock lt gt 0
  • 从应用服务中运行的 .net core 应用程序发送日志以进行日志分析

    我尝试寻找 net core 2 0 应用程序将应用程序日志发送到日志分析工作区的最简单方法 该应用程序在azure中的应用服务下运行 我尝试启用 诊断设置 并将日志存档到日志分析 但是 我没有在 AppServiceHTTPLogs 中看
  • Linux 中不使用 C++ 的 C 异常处理

    Linux 是否提供了 C 语言的异常处理而不求助于 C 或者 实现此类异常处理的最佳方法是什么 目标是避免检查每个调用的函数的返回码 而是执行类似于 C 的线程安全且易于移植的操作 您可以通过为其编写信号处理程序来处理信号 GNU 记录的
  • MS SQL 2008 如何读取日志

    我有一个有很多行的表 有什么办法可以找出来当插入具体行时 我没有创建 更新时间列 Thanks 检查日志以读取此类信息可以在单个日志条目的基础上完成 但该格式仍然没有记录 而且解码起来确实不容易 我只会出于纯粹的兴趣或取证目的而查看它 如果
  • linq-to-sql:存储过程不能在查询中使用

    这在 VS2010 RC LINQ to SQL 上失败 并出现 InvalidOperationException 存储过程不能在查询内使用 var foo from a in aTable from b in this SomeStor
  • 查看登录设备

    我想查看Log在设备上 即System out println 我可以查看DDMS但如何在运行时在设备屏幕上查看APK文件 还有一个适用于 Android 的 Logcat 应用程序 code google com p android ra
  • 日志处理程序是否使用单独的线程?

    蟒蛇的日志处理程序 http docs python org library logging handlers html都很棒 其中一些 例如SMTP处理程序 http docs python org library logging han
  • C# 中的异常转换

    为什么我会得到一个InvalidCastException当尝试这样做时 throw ArgumentNullException new Exception errormessage null 这是以下函数的简化版本 public stat
  • 如果我从 python 中的多个不同进程登录到同一个文件,会发生什么?

    我花了几个小时来挖掘这种行为 首先是关于这些问题 write 2 到本地文件系统的原子性 https stackoverflow com questions 10650861 atomicity of write2 to a local f
  • 如何在 F# 中捕获任何异常(System.Exception)而不发出警告?

    我试图捕获异常 但编译器给出警告 此类型测试或向下转型将始终保持 let testFail try printfn Ready for failing failwith Fails with System ArgumentException
  • Windows批处理支持异常处理吗?

    Windows批处理编程支持异常处理吗 如果没有 是否有任何方法可以有效地模拟批处理文件中的异常处理 我希望能够在批处理脚本中的任何 CALL 级别的任何位置 抛出异常 并重复弹出 CALL 堆栈 直到找到活动的 TRY 块 然后 CATC
  • C++ 将枚举值捕获为异常

    我正在尝试使用external C 库将其异常定义为 enum MY ERRORS ERR NONE 0 ERR T1 ERR T2 然后在代码中抛出异常是这样的 if throw ERR T1 作为 C 编程新手 我会这样做 try ca
  • 最佳实践:从属性中抛出异常

    什么时候适合从属性 getter 或 setter 中抛出异常 什么时候不合适呢 为什么 关于这个主题的外部文档的链接会很有帮助 谷歌搜索结果出奇的少 Microsoft 在以下位置提供了有关如何设计属性的建议 http msdn micr

随机推荐

  • 时间序列距离度量

    为了对一组时间序列进行聚类 我正在寻找一个智能距离度量 我尝试过一些众所周知的指标 但没有一个适合我的情况 ex Let s assume that my cluster algorithm extracts this three cent
  • 字典无法识别键类型

    在 Xcode beta 3 中 以下代码不再有效 func keyboardWasShown notification NSNotification var info notification userInfo keyboardSize
  • bxslider 在 IE9 中不工作

    我有一个 bxslider 插件在我为某人制作的网站上工作 它适用于除 IE9 之外的所有浏览器 也可能是 IE 的早期版本 但我必须测试它的是 9 我想知道我的代码哪里出了问题 我会提到它与scrolldeck视差插件一起运行 这是我的标
  • 在集群上运行时插入符号中发生错误

    我正在运行train函数于caret http cran r project org web packages caret index html在集群上通过doRedis http cran r project org web packag
  • 通过代码使 SHIFT+3 在 OSX 上生成 `#` 而不是 `£`

    在我的英国 MacBook Air 上 可以使用 OPT 3 键入 SHIFT 3 目前产生 如何重新接线以便 SHIFT 3 产生 这个问题的动机是https apple stackexchange com questions 15615
  • 关于特定国家/地区的mysql日期格式

    我使用MySQL函数DATE FORMAT table field d b Y 其中第一个参数是我的列 第二个参数是根据日期逻辑格式化列的模式 该函数的输出为英文 10 Feb 2014 我想将区域设置语言设置为fr FR这将输出这个正确的
  • 在全日历中显示图像作为背景

    我一直在寻找一些代码来使用图像作为 fullcalendar 中事件的背景 全日历 jQuery https fullcalendar io 但我所能找到的只是向所述事件添加图标的代码 我想做这样的事情 更新 2016 09 23 晚上 8
  • 如何将 python 脚本日志记录到在 Google Cloud VM 上运行的 Google stackdriver 日志记录中

    我正在使用 Google Cloud 虚拟机来运行在 cron 上安排的 python 脚本 我正在寻找某种方法来检查脚本日志并将我的脚本运行日志添加到 google stackdriver 日志记录中 无论如何 是否有将 python 脚
  • 应用程序恢复时如何处理推送通知?

    尝试使用处理推送通知推送插件 https github com phonegap build PushPlugin 以下是我的代码 onNotificationGCM function e switch e event case regis
  • 如何将OpenERP 5.0升级到6.0

    我安装了 OpenERP 5 0 其中包含一些自定义模块 我希望将其升级到 OpenERP 6 0 我对这种软件有一些经验 并且检查过OpenERP 遗憾的是 我没有 OpenERP 的实际经验 我喜欢寻求一些帮助以避免错误 在研究这个问题
  • 无法在 Flask 后端提取 React 前端上传的图像文件

    我正在尝试将图像文件 驻留在本地 从我的反应单页前端应用程序发送到我的烧瓶后端 我尝试过但不限于捕获我的内容类型并在前端指示 encType 的一些事情 尽管如此 post请求表明它是成功的 但是 当我记录 requests files r
  • 在python中将一些数组合并到单个数组/列表中

    如何转换这个数组 不同维度的numpy l array 0 08 array 0 56 0 01 0 46 array 0 60 0 07 0 03 array 0 0 0 0 array 0 到一维数组中 l array 0 08 0 5
  • 使用 XSLT 的 XML 到 XML,根据值省略特定元素

    我正在尝试生成一个与初始文件几乎相同的 xml 文件 但我需要我的 xsl 表将其转换为仅包含 为 公寓 或 单元 且具有值的文件 中超过 1 个我完全迷失了 任何帮助将不胜感激 我最初的 xml 表如下
  • SVG/矢量图室内导航路由

    我一直在网上搜索有关如何为基于 SVG 的室内平面图实现我自己的点对点导航系统的教程或方法 我已经在网上搜索过 但唯一的选项适用于谷歌地图 不过 我使用 Illustrator 创建了地图 并使用路径 矢量作为 SVG 图像 我不需要为用户
  • RestTemplate ClientHttpResponse.getBody() 抛出 I/O 错误

    我正在使用 Spring RestTemplate 进行 RESTful 调用 我还使用自定义 ClientHttpRequestInterceptor 来记录请求和响应以进行调试 为了多次读取响应 一次用于日志记录 一次用于处理 我使用
  • 使用子进程 PIPE 在 Python 脚本之间发送字符串

    我想在我的主 python 程序中使用子进程打开一个 Python 脚本 我希望这两个程序能够在运行时相互聊天 这样我就可以监视从属脚本中的活动 即我需要它们在彼此之间发送字符串 主程序将具有与此类似的功能 它将与从属脚本进行通信并监视 S
  • 如何修改 IE 和 Opera 中 SELECT 标签的默认突出显示行为?

    这是我的 HTML
  • 如何获取 ListView 项目 onItemClick 的光标值?

    我创建了一个数据库 其中包含表 类别 和列 id 标题等 我想从我的数据库中读取这些类别的数据并将它们列出在ListView 这是我的代码 public class MainActivity extends listActivity pri
  • YouTubeAndroidPlayerAPI 无法播放某些视频

    更新 09 05 2016 17 10 问题似乎与视频的发布日期有关 在4月的最后一周 我在YouTube上发布了很多视频 在4月27日19 00之前发布的视频可以正常工作 而在4月27日21 15之前发布的视频可以正常使用 当天就讨论了该
  • 发生异常时记录什么?

    public void EatDinner string appetizer string mainCourse string dessert try Code catch Exception ex Logger Log Error in