- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个企业应用程序,每当发生异常时都会记录异常信息。该应用程序是 C# 和 C++.net 的组合。
我想在发生异常时获取尽可能多的信息。截至目前,我们仅打印出消息和堆栈跟踪(在调试版本中提供行号,但在发布时不提供)。
任何错误日志的目标都是尽其所能(尽可能接近)指出错误。我很好奇我怎样才能走得更远?我想要更多信息。
例如,我知道 NullReferenceExceptions 和 InvalidArguementExceptions 包含不同数量的信息,但我没有利用“消息”字段之外的任何内容。
我最好的选择是使用反射并捕获所有公共(public)成员并将它们打印出来吗?或者也许链接大量的类型检查和转换以干净地打印出来?作为约束,我的日志记录函数只需要接受一个异常类型的参数。
最佳答案
一般来说,答案是记录 ex.ToString()。通常,对象的 ToString 方法显示对象想让您知道的内容。对于基本异常类,这包括消息和堆栈跟踪,以及任何 InnerException 实例的相同内容。 Exception 的特定派生类可能会显示更多信息。
一些异常如 SqlException 也捕获额外的信息(如存储过程名称和行号)。在这些情况下,序列化整个异常并将其作为 XML 保存在日志数据库中会很有帮助。请注意,并非所有异常类都可以序列化,因此请准备好在 XML 部分下注。
此外,如果您所做的只是记录异常,那么您可能希望重新抛出异常,以便更高级别有机会处理它。当然,当你已经处于“顶级”时,这并不适用。
关于c# - 异常 : How can I get the most possible information?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14566535/
我是一名优秀的程序员,十分优秀!