我正在数据库中记录我的应用程序的错误消息和 .NET 异常,并将它们显示在 GUI 上。GUI 以运行应用程序的用户所在地区的语言显示错误消息。为了实现这一点,我只记录错误消息的资源名称,并使用资源文件将它们转换为有意义的消息。
但是,我无法理解如何为 .NET 标准异常消息实现相同的目标。我只能记录消息字符串,但是该语言已经“烘焙”,所以我只能以该单一语言显示异常。
有没有办法获取.NET 异常的资源名称+ 插入到消息字符串中的所有参数,以便我可以记录这些?
我正在数据库中记录我的应用程序的错误消息和 .NET 异常,并将它们显示在 GUI 上。GUI 以运行应用程序的用户所在地区的语言显示错误消息。为了实现这一点,我只记录错误消息的资源名称,并使用资源文件将它们转换为有意义的消息。
但是,我无法理解如何为 .NET 标准异常消息实现相同的目标。我只能记录消息字符串,但是该语言已经“烘焙”,所以我只能以该单一语言显示异常。
有没有办法获取.NET 异常的资源名称+ 插入到消息字符串中的所有参数,以便我可以记录这些?
异常没有资源名称之类的东西,但有类的HResult
属性Exception
。标准.NET 框架异常具有有效且唯一的HResult
编号,您可以将其映射到您自己的资源标识符,然后您可以进行翻译。此外,还有一个Exception.Data
属性,它可能包含有关异常的附加信息。
或者,您可以使用正则表达式等手动解析异常消息,然后映射到您的资源 ID,但我认为这太费力了。
我也遇到了这个问题,并对此进行了大量研究。根据我所知道的一切,没有办法本地化异常本身,因为您看到的不是本地化字符串,而是实际代码。该代码仅以一种语言(英语)编写,并且只能这样显示。