记录何时是错误致命的?

Jas*_*orn 33 error-handling logging log4net log4j

在日志框架(如log4j和log4net)中,您可以记录各种级别的信息.大多数级别都有明显的意图(例如"调试"日志与"错误"的对比).但是,我一直胆怯的一件事就是将我的日志分类为"致命".

什么类型的错误如此严重以至于它们应归类为致命错误?虽然这只是一些案例驱动,但在决定将异常记录为致命或仅仅是错误时,您使用的一些经验法则是什么?

pax*_*blo 41

当你的应用程序无法做更多有用的工作时,我认为致命错误.非致命错误是指出现问题但您的应用程序仍可继续运行,即使在功能或性能降低的情况下也是如此.

致命错误的例子包括:

  • 日志设备上的磁盘空间不足,您需要继续记录.
  • 客户端应用程序中网络连接的完全丢失.
  • 如果不能使用默认值,则缺少配置信息.

非致命错误包括:

  • 由于某种原因单个会话失败但仍可以为其他客户端提供服务的服务器.
  • 如果可以建立新会话,则会出现间歇性错误,例如会话丢失.
  • 如果可以使用默认值,则缺少配置信息.

  • 在异常树的上环中使用 Fatal,大多数情况下,这是控制台应用程序的 Main void 中的 try-catch 块或 ASP.NET/MVC 应用程序的 Application_Error 或 ErrorHandler 行为(以防万一) WCF 服务。当您作为程序员完全控制您想要记录特殊故障情况但您有可恢复的回退路径(例如默认值)时,请使用 Error 。 (2认同)

Mit*_*eat 6

如果缺少某些内容或发生应用程序无法继续的情况,则会出现"致命错误".可能的示例是缺少必需的config.file或者异常"冒泡"并被未处理的异常处理程序捕获