c# - 如何传递 Exception.Data

标签 c# exception

我有一个项目,在我的错误报告中,我想通过电子邮件发送完整的错误报告。我正在捕获异常并将所有信息传递给另一个负责发送电子邮件以提供支持的方法。

我正在向 Exception.Data 对象添加重要的自定义值。但是,我无法弄清楚我需要在我的方法中使用什么类型来传递整个数据对象。

这是我的代码:

catch (Exception exc)
{
    exc.Data.Add("ID", id);
    emailConnector.sendErrorEmail(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name.ToString() + "." + System.Reflection.MethodBase.GetCurrentMethod().Name.ToString(), exc.Message, exc.Data, exc.StackTrace);
}

我将 exc.Data 传递给 sendErrorEmail 方法,所以在参数声明中我有:

public void sendErrorEmail(string origin, string error_message, IDictionary<object, object> data, string stack)

但我似乎无法为 Exception.Data 获取正确的类型声明。我更喜欢保持变量和结构相同(没有新变量),因为我目前有许多方法在 Catch block 中调用 sendErrorEmail。

我应该使用什么类型,或者是否有更简单的方法让这个 Exception.Data 与我包含在其中的额外相关信息一起正确传递?

谢谢

最佳答案

查看 help page看来你的问题是 exc.Data 的类型是IDictionary而您将其声明为 IDictionary<object, object> .

您应该收到一条错误消息,告诉您在...之间转换时遇到问题的类型

此外,除非此方法用于异常以外的其他事情,否则我会按照注释中的建议传递整个异常并在之后剖析它,而不是传递多个属性。

关于c# - 如何传递 Exception.Data,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9636891/

相关文章:

c# - ASP.NET Web API 不返回 XML

python - 如何在Python中创建具有固定数量的有效用户条目的字典?

python - 重新抛出 python 异常。抓哪个?

python - 如果传递给 **kwargs 的参数数量错误,会引发什么异常?

java - 编译Java代码时未报告异常java.io.IOException

c# - VB6 到 C# : Loop or Index Issue?

c# - 无法加载文件或程序集 'Xceed.Wpf.Toolkit

c# - 如何在 WPF 中绘制矩形?

c# - NLS 环境设置和 Oracle Managed ODP.Net

java - 如何处理 CompletableFuture 链中的错误响应?