在c#中显示的异常消息大小?

Dex*_*ers 2 c# exception

我必须向另一个系统输出一个文件,Exceptions而另一个系统只接受单行异常,它更像是一个报告,我们需要一个简短的消息描述.

我打算只显示Exception.Message 输出,但记录Exception.ToString日志.

Exception Message的大小总是一行吗?是否有另一种方法来显示始终在一行上的这些错误消息?

我的假设也Exception.ToString包含StackTrace了吗?

Cro*_*ono 5

Exception.Message是一个string.因此,绝对不能保证它总能保持在一条线上.大多数基本的异常消息将会,有些不会,并且自定义异常会有所期待.

如果绝对需要单行简短描述,那么您可能需要考虑使用SubstringReplace满足这些要求:

var maxLength = 50; // set to desired value
var strippedMessage = exception.Message;

strippedMessage = strippedMessage.Replace("\n", string.Empty); // removes newline char
strippedMessage = strippedMessage.Replace("\r", string.Empty); // removes carriage return char

if (strippedMessage.Length > maxLength)
    strippedMessage = strippedMessage.Substring(0, maxLength - 3) + "..."; // reduces the message's size
Run Code Online (Sandbox Code Playgroud)

这三个额外的点将为您提供有关已被删除的消息的线索.不用说,这里可能会丢失一些相关信息.

您还应该知道,经常InnerException(如果不为null)比Exception实例更相关.因此,如果您的"短信"旨在让您快速了解真正的问题,那么您可能需要检查一下.

另外是, ToString 通常含有 StackTrace 过多,以及嵌套内部异常ToString的结果.我通常会说因为这个ToString方法是可以覆盖的,所以有一些开发人员觉得有创意的可能性决定在一个完全不同的自定义异常上覆盖它.