gpt4 book ai didi

c# - 如何在不丢失 C# 中的任何信息的情况下向异常添加消息?

转载 作者:IT王子 更新时间:2023-10-29 03:47:58 25 4
gpt4 key购买 nike

我有以下代码:

catch(Exception ex)
{
throw new FatalException("An error occurred while trying to load the XSLT file.", ex);
}

不幸的是,这只是吞噬了异常。我可以通过执行以下操作来解决此问题:

catch(Exception ex)
{
throw;
}

但我仍然希望包含自定义消息以帮助进行事件记录。

如何在不丢失任何信息的情况下将此消息添加到异常中? (堆栈跟踪/调试符号等)

最佳答案

如果您只需要向原始异常添加信息,例如用户可读的消息或有助于您跟踪错误但对最终用户无用的特定详细信息,您可以利用异常的 Data属性,它是一个键/值对字典。

我们广泛使用它来记录信息,例如正在执行的报告或正在处理的文件,以便操作可以确定错误发生时到底发生了什么。用户不需要此详细信息,因为他们直接处理失败的原因。

您还可以使用它来传递对用户有意义的纯文本消息。唯一的问题是您必须在日志记录框架或最终用户界面中执行一些额外的工作才能提取数据并使其对消费者有用。

例如,你可以这样做:

catch (Exception ex)
{
ex.Data.Add("UserMessage", "An error occurred while trying to load the XSLT file.");
throw;
}

然后在客户端代码中,您可以测试 UserMessage 是否存在,如果存在,则将其呈现给用户而不是异常:

catch (Exception ex)
{
if (ex.Data.Contains("UserMessage"))
{
MessageBox.Show(ex.Data["UserMessage"].ToString());
}
else
{
MessageBox.Show(ex.Message);
}
}

关于c# - 如何在不丢失 C# 中的任何信息的情况下向异常添加消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14409988/

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