gpt4 book ai didi

.net - 为什么一些 .Net 异常以换行符结尾

转载 作者:行者123 更新时间:2023-12-04 12:16:13 25 4
gpt4 key购买 nike

我有一个向用户显示错误的 ListView。其中一部分还包括异常消息。错误也会写入日志文件。

现在我注意到一些异常消息以换行符结尾。例如File.Move 可以返回消息(英文 .Net 3.5 SP1)“当文件已存在时无法创建文件。\r\n”

换行符导致 ListView 和日志文件看起来很奇怪。添加 .Trim() 可以解决问题,但是否有换行的原因。

最佳答案

异常消息文本有两个来源。首先是 mscorlib.dll 中的字符串资源,其次是 Windows 本身使用 FormatMessage() API 生成的文本。您的示例的错误代码是 183,ERROR_ALREADY_EXISTS。 Mscorlib.dll 确实包含该错误的专用字符串资源:

IO.IO_AlreadyExists_Name=无法创建“{0}”,因为同名文件或目录已存在。

该消息中没有换行符。生成异常消息 (System.IO.WinIOError) 的代码首先检查是否存在要为 {0} 复合格式参数生成的有意义的文件名。显然你的程序失败了,这有点奇怪。回退是由 FormatMessage() 生成的 Windows 错误消息,它的格式与您找到的资源字符串的格式不同。

可以说这是一个错误,您可以在 connect.microsoft.com 上报告它。不过,这将得到解决的可能性为零。那里有一些灵魂正在解析 Message 属性,特别是因为这是一个 IOException。像您一样修剪是一个很好的解决方法。

关于.net - 为什么一些 .Net 异常以换行符结尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1859530/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com